大佬教程收集整理的这篇文章主要介绍了swift – 如何在Vapor 3中处理密码哈希?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
static func create(_ req: request,newUserrequest user: CreateUserrequest) throws -> Future<User.Public> { return User.query(on: req).filter(\.username == user.userName).first().flatMap { exisTingUser in guard exisTingUser == nil else { throw Abort(.badrequest,reason: "A user with the given username already exists.") } guard user.password == user.passwordVerification else { throw Abort(.badrequest,reason: "Given passwords did not match.") } let count = 16 var pw_salt_data = Data(count: count) let _ = pw_salt_data.withUnsafeMutableBytes { mutableBytes in SecRandomCopyBytes(kSecRandomDefault,count,mutableBytes) } let pw_salt = try BCrypt.hash(pw_salt_data.base64EncodedString()) let pw_hash = try BCrypt.hash(pw_salt + user.password) return User(id: nil,username: user.username,pw_hash: pw_hash,pw_salt: pw_salt,email: user.email).save(on: req).toPublic() } }
但是在登录期间执行身份验证时无法检索该盐:
static func login(_ req: request) throws -> Future<UserToken> { let user = try req.requireAuthenticated(User.self) let token = try UserToken.create(userID: user.requirEID()) return token.save(on: req) }
我希望为每个用户@L_618_8@生成salt,并将其作为与散列密码分开的列存储在数据库中,以便稍后在身份验证期间使用.
有没有一种标准化的方法来处理在Vapor 3中腌制密码哈希?
以上是大佬教程为你收集整理的swift – 如何在Vapor 3中处理密码哈希?全部内容,希望文章能够帮你解决swift – 如何在Vapor 3中处理密码哈希?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。