Authentication Webapplication登录系统
我正在使用revel构建我的Web应用程序,并尝试编写身份验证模块。 我完成了注册部分,现在开始写注册部分。 我阅读了关于安全的部分,并将使用此建议 我真正不知道的是,登录是如何工作的。我想象这个过程是这样的:Authentication Webapplication登录系统,authentication,go,Authentication,Go,我正在使用revel构建我的Web应用程序,并尝试编写身份验证模块。 我完成了注册部分,现在开始写注册部分。 我阅读了关于安全的部分,并将使用此建议 我真正不知道的是,登录是如何工作的。我想象这个过程是这样的: 用户将用户名和密码写入html表单,然后按“登录” 服务器接收请求,控制器将检查用户信息是否与数据库中的数据匹配 如果是,如何继续 第三点是我要呆的地方。但我有一些想法,如何可以工作,不确定,如果是正确的方式 所以,当登录信息和数据库匹配时,我将在会话对象(哈希数据类型)中设置已登录的密
我会这样做,但正如我上面提到的,我不知道这是否是正确的方法 是的,就像前面提到的@twoo一样,给它一个用户id和一个角色 所以服务器端渲染流:步骤1
- 用户发送用户名(或其他标识符)和密码
- 使用scrypt或bcrypt,根据数据库中存储的salt散列检查机密
- 如果匹配,则创建结构或映射
- 将结构或映射序列化为字符串(json、msgpack、gob)
- 使用AES加密字符串(例如)。设置一个全局AES密钥
- 创建唯一的cookie(或会话)标识符(密钥)
- 在数据库中存储标识符和原始结构或映射
- 发送加密的cookie(id=加密的\u结构\u或\u映射,也称为加密字符串)
- 从cookie中读取标识符
- 检查数据库中是否存在id
- 使用AES密钥解码cookie值
- 将cookie中的值与存储的值进行比较
- 如果user.role==“允许访问此资源”呈现页面
- 否则http.ResponseWriter.WriteHeader(403)或重定向到登录页面
在任何更改中,您都必须更新cookie值(struct/map)和数据库中的信息。mmm,it auth还没有完全实现这一点。您可能还希望在会话中放置一些标识用户的内容。