今天给大家推荐的这个开源项目很给力,可能是史上最全的Java权限认证框架!这个开源项目是:sa-token。什么是Sa-Token?sa-token是一个轻量级的Java权限认证框架,主要解决登录认证、权限认证、Session会话、单点登录、OAuth2.0等一系列权限相关的问题,分离、分布式会话...和其他通用服务进行N多适配,通过sa-token,可以极简的实现系统的权限认证部分sa-token相对于其他权限认证框架有以下优势:简单:零配置启动框架,真正开箱即用,低成本使用功能强大:集成了数十种权限相关特性,解决方案覆盖大部分业务场景易用性:丝般顺畅的API调用,大量高级特性可实现高一行代码扩展:几乎所有的组件都提供了扩展接口,90%以上的逻辑都可以根据需要进行重写。不再是问题!Sa-Token能做什么?登录验证——轻松登录验证,并提供五种细分场景值权限验证——适配RBAC权限模型,不同角色不同授权Session会话——专业数据缓存中心踢人下线——立即移除违规用户清晰下线持久层扩展-可集成Redis、Memcached等专业缓存中间件,重启数据不丢失分布式会话-提供jwt集成和共享数据中心两种分布式会话解决方案Singlesign-on-一次登录随处模拟其他账户-实时操作任意用户状态数据临时身份切换——临时切换session身份为其他账号无Cookie模式——APP、小程序等前后台分离场景同终端互斥登录——如QQ同一手机、电脑同时在线时间,但是两台手机互斥登录多账号认证系统——比如某商城项目的user表和admin表分别认证花哨的token生成——内置六种token样式,以及token也可以自定义生成策略注解鉴权——鉴权与业务代码优雅分离路由拦截鉴权——根据路由拦截鉴权,可适配restful模式自动续期——提供两种token过期策略,搭配灵活,还可以自动续期session管理-提供方便灵活的session查询接口组件自动注入-零配置与Spring等框架集成更多功能正在集成中...-如果您有好的想法或建议,欢迎进群交流代码示例API调用sa-token很简单,简单到什么程度呢?以登录验证为例,只需要://登录时写入当前会话的账号idStpUtil.setLoginId(10001);//然后在任何需要验证登录的地方调用下面的API//如果当前session没有登录,这段代码会抛出`NotLoginException`异常StpUtil.checkLogin();至此,我们已经使用sa-token框架完成了登录授权!这时候你的小脑袋可能满是问号,就这么简单吗?自定义领域呢?全局过滤器呢?我不用写各种配置文件吗?其实在这里我可以很负责任的告诉大家,在sa-token中,登录授权就是这么简单,不需要什么全局的过滤器,不需要各种乱七八糟的配置!只需要这个简单的API调用,就可以完成会话的登录授权!当你厌倦了Shiro、Security等框架时,你就会明白sa-token的API设计与这些传统的老框架相比有多么耳目一新!权限认证示例(只有有user:add权限的会话才能进入请求)@SaCheckPermission("user:add")@RequestMapping("/user/insert")publicStringinsert(SysUseruser){return"Adduser";}Kickanaccountoffline(对方再次访问系统时会抛出NotLoginException)//让账号id为10001的session退出登录StpUtil.logoutByLoginId(10001);除了上面的例子,sa-token还可以一行代码完成以下功能:StpUtil.setLoginId(10001);//标记当前会话的账号idloginStpUtil.getLoginId();//获取当前会话的账号idloginStpUtil.isLogin();//获取当前会话是否登录,返回true或falseStpUtil.logout();//注销当前会话StpUtil.logoutByLoginId(10001);//注销帐号10001的会话(踢人下线)StpUtil.hasRole("super-admin");//查询当前账号是否有指定角色ID,返回true或falseStpUtil.hasPermission("user:add");//查询当前账号是否有指定权限,返回true或falseStpUtil.getSession();//获取当前账户idSessionStpUtil.getSessionByLoginId(10001);//获取账号id为10001的SessionStpUtil.getTokenValueByLoginId(10001);//获取账户id为10001的token令牌值StpUtil.setLoginId(10001,"PC");//指定设备Logo登录StpUtil.logoutByLoginId(10001,"PC");//指定强制退出的设备标识(不同端不受影响)StpUtil.switchTo(10044);//暂时将当前session身份切换为其他账号开源项目地址:https://github.com/click33/sa...PS:如果觉得我的分享不错,欢迎点赞阅读近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别再满脑子if/else了,试试策略模式,真香!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
