Sa-Token

pom

  <!-- Sa-Token 权限认证, 在线文档:http://sa-token.dev33.cn/ --><dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot-starter</artifactId><version>1.28.0</version></dependency>

1.sa-token登录

     @PostMapping("/doLogin")public String login(String name, String password) {if ("123456".equals(name) && password.equals("123456")) {StpUtil.login(10001);return "登录成功";}return "登录失败";}


2.验证当前会话是否登录
顺便校验一下权限

/*** 验证当前会话是否登录,同时对权限以及角色进行校验** @return*/@GetMapping("/isLogin")public Map<String,Object> isLogin() {// 拥有hash 判断checkMap<String,Object> stpMap=new HashMap<>();// 判断:当前账号是否拥有指定角色, 返回true或falseStpUtil.hasRole("super-admin");// 校验当前用户是否具有指定权限标识,如果验证未通过,则抛出异常NotRoleExceptionStpUtil.checkRole("super-admin");// 校验当前账户是否具有全部角色标识,使用and必须全部验证通过StpUtil.checkRoleAnd("super-admin","shop-admin");// 校验:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] super-adminStpUtil.checkRoleOr("super-admin","shop-admin");// 判断 当前用户是否含有指定权限,返回true或falseStpUtil.hasPermission("user-update");// 校验当前账户是否具有全部权限标识,使用and必须全部验证通过StpUtil.checkPermissionAnd("user-update","user-add");// 校验:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] user-updateStpUtil.checkPermissionAnd("user-update","user-add");// 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException//权限校验,如果在Component中注释掉这个权限,访问的时候则会报无此权限StpUtil.checkPermission("user-update");stpMap.put("isLogin",StpUtil.isLogin());stpMap.put("role",StpUtil.hasRole("super-admin"));return stpMap;}

权限代码
权限代码加入Component 即可,启动会自动扫描配置

/*** @author Fetter* @ClassName StpInterfaceImpl.java* @Description 自定义权限验证接口扩展 Component保证此类被SpringBoot扫描,完成Sa-Token的自定义权限验证扩展* @createTime 2021年12月21日 15:56:00*/@Component
public class StpInterfaceImpl implements StpInterface {/*** 返回一个账号所拥有的权限码集合*/@Overridepublic List<String> getPermissionList(Object o, String s) {// 本list仅做模拟,实际项目中要根据具体业务逻辑来查询权限List<String> list = new ArrayList<String>();list.add("101");list.add("user-add");list.add("user-delete");list.add("user-update");list.add("user-get");list.add("article-get");return list;}/*** 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)*/@Overridepublic List<String> getRoleList(Object o, String s) {// 本list仅做模拟,实际项目中要根据具体业务逻辑来查询角色List<String> list = new ArrayList<String>();list.add("admin");list.add("super-admin");list.add("shop-admin");return list;}
}


3.退出登录
通过登录id退出登录,在校验是否还在登录状态

/*** 退出登录** @param loginId* @return*/@GetMapping("/exitLogin")public String exitLogin(String loginId) {StpUtil.logout(loginId);return loginId + "已退出登录";}



4.通过loginId判断是否登录

 /*** 通多登录id(loginId)判断是否登录** @return*/@GetMapping("/queryUser")public String queryUser() {if (StpUtil.getLoginId().toString().isEmpty()) {return "未登录,请登录!";} else {// 获取登录idSystem.out.println(StpUtil.getLoginId().toString());return "ok";}}


5.获取当前会话token

 /*** 通过loginId获取当前会话token** @return*/@GetMapping("/getToken")public String queryToken(String loginId) {// 直接获取tokenSystem.out.println(StpUtil.getTokenValue());// 根据loginID获取tokenSystem.out.println(StpUtil.getTokenValueByLoginId(loginId));//获取token名称System.out.println(StpUtil.getTokenName() + ":" + StpUtil.getTokenValue());return StpUtil.getTokenValue();}



6.踢人下线&强制注销&账号封禁
通过loginId强制踢人下线
所谓踢人下线,核心操作就是找到其指定loginId对应的token,并设置其失效

    /*** 强制踢人下线*/@GetMapping("/isLogout")public String isLogOut(String loginId){// 强制注销// 强制指定登录loginId注销下线StpUtil.logout(loginId);// 强制指定账号在指定设备端注销下线StpUtil.logout(loginId,"PC");// 强制指定token注销下线StpUtil.logoutByTokenValue(StpUtil.getTokenValue());// 踢人下线// 将指定登录loginId踢下线StpUtil.kickout(loginId);// 将指定登录loginId pc端踢下线StpUtil.kickout(loginId,"PC");// 将指定登录token踢下线StpUtil.kickoutByTokenValue(StpUtil.getTokenValue());// 区别 强制注销 和 踢人下线 的区别在于:////强制注销等价于对方主动调用了注销方法,再次访问会提示:Token无效(清除token信息)。//踢人下线不会清除Token信息,而是将其打上特定标记,再次访问会提示:Token已被踢下线// 账号封禁// 封禁指定账号// 参数一:账号id// 参数二:封禁时长,单位:秒  (86400秒=1天,此值为-1时,代表永久封禁)StpUtil.disable(loginId,86400);// 获取指定账号是否已被封禁 (true=已被封禁, false=未被封禁)StpUtil.isDisable(10001);// 获取指定账号剩余封禁时间,单位:秒StpUtil.getDisableTime(10001);// 解除封禁StpUtil.untieDisable(loginId);//        注意点
//        对于正在登录的账号,对其账号封禁时并不会使其立刻注销
//        如果需要将其封禁后立即掉线,可采取先踢再封禁的策略,例如:StpUtil.kickout(loginId);StpUtil.disable(loginId,-1);return loginId+"已退出登录";}

sa-token使用简单使用相关推荐

  1. Access Token机制简单介绍

    Access Token 机制简单介绍 我们在访问很多大公司的开发 api 的时候,都会发现这些api要求传递一个 access token 参数.这个参数是什么呢?需要去哪里获取这个 access ...

  2. Token的简单理解

    1.什么是Token? Token的意思是"令牌",是服务端生成的一串字符串,作为客户端进行请求的一个标识. 当用户第一次登录后,服务器生成一个token并将此token返回给客户 ...

  3. JWT 生成Token、解析Token的简单工具类

    pom.xml导入依赖: <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt& ...

  4. Token的简单解释

    转自:https://blog.csdn.net/ITzhangdaopin/article/details/78360853 最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在 ...

  5. JWT —— 生成Token、解析Token的简单工具类

    目录 1.JWT介绍 2.导入依赖 3.用户类 4.JWT工具类 背景:最近需要实现根据账号密码生成令牌码的功能,token解析后需要得到用户id.用户账号和用户类型.实现起来并不难,解决方法就是在J ...

  6. asp.net Web API 身份验证 不记名令牌验证 Bearer Token Authentication 简单实现

    1. Startup.Auth.cs文件 添加属性 1 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; ...

  7. Sa-Token简单登录认证

    sa token是一个全新的权限框架,相比spring security和apache shiro来说,使用起来更加便捷,配置更少,侵入性更小. 下面是一个简单的登录认证示例,以一个spring bo ...

  8. jwt token 过期刷新_不要把 JWT 用作 session

    现在很多人使用 JWT 用作 session 管理,这是个糟糕的做法,下面阐述原因,有不同意见的同学欢迎讨论. 首先说明一下,JWT 有两种: 无状态的 JWT,token 中包含 session 数 ...

  9. 基于 Token 的身份验证:JSON Web Token

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等, 比起传统的身份验证方法,Token 扩展性更强 ...

  10. [认证授权] 2.OAuth2授权(续) amp;amp; JSON Web Token

    0. RFC6749还有哪些可以完善的? 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权 中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如 ...

最新文章

  1. 如何检查你的项目是不是真的需要用到 AI?
  2. axios delete有请求体吗_封装 axios 取消重复请求
  3. Lua require 相对路径
  4. spark有什么作用_Spark 101:它是什么,它做什么以及为什么起作用
  5. if ( document.all ) 可以简单的判断浏览器是否IE浏览器?
  6. python until怎么用_python基础之从认识python到python的使用
  7. web端功能自动化定位元素(暂不更新)
  8. axios 与 Vuex的使用
  9. 算法训练 Bus Tour
  10. 卡耐基梅隆大学一些关于人机交互中未来接口人研究
  11. zlog日志使用说明
  12. dateutil 日期计算_时间工具——DateUtil
  13. 基于Servlet和jsp的小说网站系统
  14. odoo11 odoo.addons.base.ir.ir_model: Access Denied by ACLs for operation: read, uid: 4,
  15. 月薪40K起,什么是Python全栈工程师?全栈工程师薪资为何这么高?
  16. maven打包报错scalac error: xxxx\target\classes does not exist or is not a director
  17. PPT如何查看并修改幻灯片大小
  18. 火狐浏览器页面元素查看
  19. BZOJ1064 NOI2008假面舞会
  20. [转载] 毕业半年,我在富士康的日日夜夜

热门文章

  1. LaTeX入门_刘海洋_电子工业出版社_案例代码1
  2. 机器人是如何实现对话的?
  3. eclipse功能template(模板)学习。e.g : 快速在代码中插入时间戳
  4. 301 Moved Permanently错误
  5. 除铜树脂CH-90NA、电镀废水回收铜工艺
  6. 学习各种计算机知识网站推荐
  7. 计算机程序由算法,计算机程序算法试题.pdf
  8. 洋哥有哪些送给20多岁年轻人的建议?
  9. 无器械健身和健身房器械训健身比较 2
  10. mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库