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

一、什么是token

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

tokenrank官网

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

token_online

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

tokenall官网

二、Token的验证过程

客户端:用户名和密码请求登录

服务器:收到请求,验证用户名和密码,验证成功后,分发一个Token返回给客户端

客户端:将Token存储,例如放在 里或者 Local 里,后续每次请求,带上此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是否失效,若失效——凭证已失效

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

返回顶部
跳到底部

Copyright © 2002-2024 imToken钱包下载官网 Rights Reserved.
备案号:晋ICP备13003952号

谷歌地图 | 百度地图
Powered by Z-BlogPHP Theme By open开发