基于Token实现身份验证和权限管理
admin
2024-01-26
895次阅读
一、什么是token
HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息token 权限管理·(中国)官方网站,没办法区分每次请求的不同。
Token是服务器生成的一串字符,作为客户端请求的令牌。当第一次登陆后,服务器会分发字符串给客户端。后续的请求,客户端只需带上这个Token,服务器即可知道是该用户的访问。
使用,可以实现:权限管理、身份验证、防止同一账号异地登录。
二、Token的验证过程
客户端:用户名和密码请求登录
服务器:收到请求,验证用户名和密码,验证成功后,分发一个Token返回给客户端
客户端:将Token存储,例如放在 里或者 Local 里,后续每次请求imToken钱包官网,带上此Token
服务器:收到请求,验证Token是否正确,验证成功返回请求数据
2.1 Token的生成
String token = user.getUserid() + "-" + createStringId();
user.setToken(token);public static String createStringId() {UUID uuid = UUID.randomUUID();return uuid.toString();
}public final class UUID implements java.io.Serializable, Comparable {public static UUID randomUUID() {SecureRandom ng = Holder.numberGenerator;byte[] randomBytes = new byte[16];ng.nextBytes(randomBytes);randomBytes[6] &= 0x0f; /* clear version */randomBytes[6] |= 0x40; /* set to version 4 */randomBytes[8] &= 0x3f; /* clear variant */randomBytes[8] |= 0x80; /* set to IETF variant */return new UUID(randomBytes);}
}
2.2 Token实现权限管理
案例
请求加载最新供应链消息
客户端:请求接口+token
服务器:验证是否能通过token找到用户,若不能——该token不正确
验证token是否失效,若失效——凭证已失效
到权限表查询是否在权限内,若没有——该用户未分配资源
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。