我正在调整这篇博文中的登录功能。User 结构体(见下文)有四个字段,id、name、email 和 password。您可以在下面的数据库中看到一行。将fmt.Println在登录功能向用户显示是这样的数据库查询后 &{3 testuser $2a$10$hS7sth8jIBN2/IXFTWBibu3Ko5BXm9zHO5AJZRAbAOQ04uv.Gs5Ym [116 101 115 116 117 115 101 114 64 103 109 97 105 108 46 99 111 109]}换句话说,它有id(3)、name(testuser)、散列密码,但还有一组数字,这让我有点惊讶,因为它不在数据库的行中(见下文)。您还会注意到fmt.Println没有显示电子邮件,即使它在数据库的行中可见,所以这里似乎有问题。当 bcrypt 比较Login函数中的哈希值和密码时,它给了我这个错误hashedSecret too short to be a bcrypted password not auth你能解释为什么会抛出这个错误吗?func Login(password, email string) (u *User, err error) { u = &User{} err = db.QueryRow("select * from users where email=$1 ", email).Scan(&u.Id, &u.Name, &u.Password, &u.Email) fmt.Println("u", u) if err != nil { fmt.Println("err", err) } err = bcrypt.CompareHashAndPassword(u.Password, []byte(password)) if err != nil { u = nil } return}我有一个包含以下字段的用户结构type User struct { Id int Name string Email string Password []byte}我像这样在 postgres 中为它创建了一个表CREATE TABLE "public"."users" ( "id" int4 NOT NULL DEFAULT nextval('users_id_seq'::regclass), "username" varchar(255) NOT NULL COLLATE "default", "email" varchar(255) NOT NULL COLLATE "default", "password" bytea )WITH (OIDS=FALSE);这是数据库中的一行id | username | email | password ----+------------+----------------------+---------------------------------------------------------------------------------------------------------------------------- 3 | testuser | testuser@gmail.com | \x24326124313024685337737468386a49424e322f495846545742696275334b6f3542586d397a484f35414a5a524162414f51303475762e477335596d
1 回答
- 1 回答
- 0 关注
- 706 浏览
添加回答
举报
0/150
提交
取消