1、登录功能的实现「Token生成流程」:
- 点击登录按钮后会进入登录页面,用户需要填写用户名,密码以及验证码去进行提交。「 客户端使用用户名和密码请求登录 」
- 在service层对提交的表单数据进行验证,判断用户,密码,验证码是否正确,首先我们定义一个空的map,如果用户名不存在,则返回map中的v为“该用户不存在”。「 服务端收到请求,去验证用户名和密码 」
- 如果都正确,会生成一个token,将token返回给浏览器cookie保存,并将token(key)和user的用户信息(value)保存在redis(hash)中。「 验证成功后,服务端会签发一个Token,再把这个Token发送给客户端。客户端收到Token以后可以把它存储起来,比如放在Cookie里。客户端每次向服务端请求资源的时候需要带着服务端签发的Token。服务端收到请求,然后去验证客户端请求里面带着的Token,如果验证成功,就向客户端返回请求的数据。」
Token的生成过程是通过加密算法将用户身份相关的信息(用户ID、用户名、密码等)和随机字符串等数据生成一个唯一的Token,用于身份验证和授权。同时,Token还具有过期时间等特性,以保证用户的安全性和数据的保密性。
Token是由服务端生成的一个唯一标识符,通常是由随机生成的一串字符组成,目的是为了确保Token的随机性和安全性。
2、token 包含以下信息
- 用户 ID:用于识别用户身份。
- 过期时间:该 token 的有效期限,一旦过期,该token将失效。
- 签名:用于验证token的真实性,防止token被篡改。
这些信息通常是在服务器端生成并签名后,作为响应的一部分返回给客户端。客户端在后续的请求中需要在请求头或请求体中携带该 token,以便服务器端能够识别请求的来源并验证其合法性。
退出:
- 将登录凭证修改为失效状态
- 跳转至网站首页
3、token怎么生成的,用什么数据生成?
Token由一段文本(如用户ID、用户名、会话ID等)生成的加密字符串的方法,通常使用哈希算法(如SHA-256、SHA-512等)来对文本进行加密,并将加密后的结果作为Token的字符串表示。
具体实现步骤如下:
- 将文本转换为UTF-8编码的字节数组。
- 使用哈希算法对字节数组进行加密,生成另一个字节数组。
- 将加密后的字节数组转化为字符串,作为Token的加密字符串。
常见的实现库有JWT(JSON Web Token)、Python中的itsdangerous库等。
4、在论坛项目中,token主要用于以下几个方面
- 用户登录:用户在登录成功后,服务器会生成一个token,将其返回给客户端,客户端在后续请求中将token携带上来,服务器通过验证token来确定用户是否已登录;
- 权限控制:服务器通过解析token中的用户信息,来判断用户是否有权限访问请求的资源;
- 单点登录:如果用户在多个客户端登录了同一个账号,服务器可以通过token来判断是否已在其他客户端登录,从而实现单点登录的功能。