7

springboot集成轻量级权限认证框架sa-token

 3 years ago
source link: http://www.cnblogs.com/yunchu/p/14272953.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

sa-token是什么?

sa-token是一个JavaWeb轻量级权限认证框架,主要解决项目中登录认证、权限认证、Session会话等一系列由此衍生的权限相关业务。相比于其他安全性框架较容易上手。

代码示例

1 sa-token的API调用非常简单,有多简单呢?以登录验证为例,你只需要:
2 // 在登录时写入当前会话的账号id 
3 StpUtil.setLoginId(10001);    
4 // 然后在任意需要校验登录处调用以下API  --- 如果当前会话未登录,这句代码会抛出 `NotLoginException`异常
5 StpUtil.checkLogin();   

如果上面的示例能够证明sa-token的简单,那么以下API则可以证明sa-token的强大

 1 StpUtil.setLoginId(10001);          // 标记当前会话登录的账号id
 2 StpUtil.getLoginId();               // 获取当前会话登录的账号id
 3 StpUtil.isLogin();                  // 获取当前会话是否已经登录, 返回true或false
 4 StpUtil.logout();                   // 当前会话注销登录
 5 StpUtil.logoutByLoginId(10001);     // 让账号为10001的会话注销登录(踢人下线)
 6 StpUtil.hasRole("super-admin");     // 查询当前账号是否含有指定角色标识, 返回true或false
 7 StpUtil.hasPermission("user:add");  // 查询当前账号是否含有指定权限, 返回true或false
 8 StpUtil.getSession();               // 获取当前账号id的Session 
 9 StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session
10 StpUtil.getTokenValueByLoginId(10001);  // 获取账号id为10001的token令牌值
11 StpUtil.setLoginId(10001, "PC");        // 指定设备标识登录
12 StpUtil.logoutByLoginId(10001, "PC");   // 指定设备标识进行强制注销 (不同端不受影响)
13 StpUtil.switchTo(10044);                // 将当前会话身份临时切换为其它账号 

框架涵盖功能

AfQFRjF.png!mobile

与SpringBoot集成具体API

sa-token.dev33.cn/doc/index.h…

登录验证具体API

sa-token.dev33.cn/doc/index.h…

示例:

 1   StpUtil.setLoginId(Object loginId)
 2   标记当前会话登录的账号id
 3   建议的参数类型:long | int | String, 不可以传入复杂类型,如:User、Admin等等
 4 
 5   StpUtil.logout()
 6   当前会话注销登录
 7 
 8   StpUtil.isLogin()
 9   获取当前会话是否已经登录,返回true=已登录,false=未登录
10 
11   StpUtil.checkLogin()
12   检验当前会话是否已经登录, 如果未登录,则抛出异常:NotLoginException
13   扩展:NotLoginException 对象可通过 getLoginKey() 方法获取具体是哪个 StpLogic 抛出的异常
14   扩展:NotLoginException 对象可通过 getType() 方法获取具体的场景值,详细参考章节:未登录场景值
15 
16   StpUtil.getLoginId()
17   获取当前会话登录id, 如果未登录,则抛出异常:NotLoginException
18   类似API还有:
19   StpUtil.getLoginIdAsString() 获取当前会话登录id, 并转化为String类型
20   StpUtil.getLoginIdAsInt() 获取当前会话登录id, 并转化为int类型
21   StpUtil.getLoginIdAsLong() 获取当前会话登录id, 并转化为long类型
22 
23   StpUtil.getLoginId(T defaultValue)
24   获取当前会话登录id, 如果未登录,则返回默认值 (defaultValue可以为任意类型)
25   类似API还有:
26   StpUtil.getLoginIdDefaultNull() 获取当前会话登录id, 如果未登录,则返回null
27 
28   StpUtil.getLoginIdByToken(String tokenValue)
29   获取指定token对应的登录id,如果未登录,则返回 null
30 
31   StpUtil.getTokenName()
32   获取当前StpLogic的token名称

权限验证查看具体API

sa-token.dev33.cn/doc/index.h…

写在最后

源码开源,作者不易,如果你喜欢这个框架麻烦你随手点一颗小星星哦!

B3ayyym.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK