基于Token实现身份验证和权限管理

admin 2024-01-26 29次阅读

一、什么是token

HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息token 权限管理·(中国)官方网站,没办法区分每次请求的不同。

tokenrank官网

Token是服务器生成的一串字符,作为客户端请求的令牌。当第一次登陆后,服务器会分发字符串给客户端。后续的请求,客户端只需带上这个Token,服务器即可知道是该用户的访问。

tokensoft官网

使用,可以实现:权限管理、身份验证、防止同一账号异地登录。

二、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是否失效,若失效——凭证已失效

到权限表查询是否在权限内,若没有——该用户未分配资源