为了账号安全,请及时绑定邮箱和手机立即绑定

比较 golang 中的错误

比较 golang 中的错误

Go
白衣非少年 2021-10-18 14:08:27
我正在用 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信