我正在用 golang 编写一个基本的密码认证系统。我使用 bcrypt 对密码进行散列并将散列保存在数据库中。这是从数据库中检索经过身份验证的帐户的函数。func FindAccount(db *gorp.DbMap, email, password string) (*Account, error) { account, err := FindByEmail(db, email) if err != nil { return nil, err } if account == nil { return nil, nil } if err := bcrypt.CompareHashAndPassword([]byte(account.HashedPassword), []byte(password)); err != nil { return nil, err } return account, nil}和来电者:account, err := FindAccount(db, email, password)if err != nil { if err == bcrypt.ErrMismatchedHashAndPassword { log.Printf("Why doesn't this condition match?") return nil, EmailPasswordInvalidError{} } log.Printf("bcrypt.Err: %p, %#v", bcrypt.ErrMismatchedHashAndPassword, bcrypt.ErrMismatchedHashAndPassword) log.Printf("err : %p, %#v", err, err) return nil, err}当我使用此代码并提供无效的电子邮件和密码时,会发生以下情况:sessions.go:51: bcrypt.Err: 0xc2080290b0, &errors.errorString{s:"crypto/bcrypt: hashedPassword is not the hash of the given password"}sessions.go:52: err : 0xc2080291e0, &errors.errorString{s:"crypto/bcrypt: hashedPassword is not the hash of the given password"}为什么指针地址不同?我们不能只比较错误吗?
1 回答
- 1 回答
- 0 关注
- 231 浏览
添加回答
举报
0/150
提交
取消