zoukankan      html  css  js  c++  java
  • SpringBoot整合sa-token,完成网站权限验证

    sa-token是什么?

    sa-token是一个JavaWeb轻量级权限认证框架,其API调用非常简单,有多简单呢?以登录验证为例,你只需要:

    // 在登录时写入当前会话的账号id 
    StpUtil.setLoginId(10001);    
    
    // 然后在任意需要校验登录处调用以下API  
    // --- 如果当前会话未登录,这句代码会抛出 `NotLoginException`异常
    StpUtil.checkLogin();    

    没有复杂的封装!不要任何的配置!只需这两行简单的调用,即可轻松完成系统登录鉴权!

    与其它权限认证框架相比,sa-token尽力保证两点:

    • 上手简单:能自动化的配置全部自动化,不让你费脑子
    • 功能强大:能涵盖的功能全部涵盖,不让你用个框架还要自己给框架打各种补丁

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

    StpUtil.setLoginId(10001);          // 标记当前会话登录的账号id
    StpUtil.getLoginId();               // 获取当前会话登录的账号id
    StpUtil.isLogin();                  // 获取当前会话是否已经登录, 返回true或false
    StpUtil.logout();                   // 当前会话注销登录
    StpUtil.logoutByLoginId(10001);     // 让账号为10001的会话注销登录(踢人下线)
    StpUtil.hasRole("super-admin");     // 查询当前账号是否含有指定角色标识, 返回true或false
    StpUtil.hasPermission("user:add");  // 查询当前账号是否含有指定权限, 返回true或false
    StpUtil.getSession();               // 获取当前账号id的Session 
    StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session
    StpUtil.getTokenValueByLoginId(10001);  // 获取账号id为10001的token令牌值

    涵盖功能

    • 登录验证 —— 轻松登录鉴权,并提供五种细分场景值
    • 权限验证 —— 拦截违规调用,不同角色不同授权
    • Session会话 —— 专业的数据缓存中心
    • 踢人下线 —— 将违规用户立刻清退下线
    • 模拟他人账号 —— 实时操作任意用户状态数据
    • 持久层扩展 —— 可集成redis、MongoDB等专业缓存中间件
    • 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
    • 无Cookie模式 —— APP、小程序等前后台分离场景
    • 注解式鉴权 —— 优雅的将鉴权与业务代码分离
    • 花式token生成 —— 内置六种token风格,还可自定义token生成策略
    • 自动续签 —— 提供两种token过期策略,灵活搭配使用,还可自动续签
    • 组件自动注入 —— 零配置与Spring等框架集成
    • 更多功能正在集成中... —— 如有您有好想法或者建议,欢迎加群交流
    • ...

    SpringBoot集成示例

    1、创建项目

    在IDE中新建一个Springboot项目,例如:sa-token-demo-springboot(不会的同学请自行百度或者参考github示例)

    2、设置jar包依赖

    在 pom.xml 中添加依赖:

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

      

    3、配置文件

    • 你可以零配置启动项目
    • 但同时你也可以在application.yml中增加如下配置,定制性使用框架:
    spring: 
        # sa-token配置
        sa-token: 
            # token名称 (同时也是cookie名称)
            token-name: satoken
            # token有效期,单位s 默认30天, -1代表永不过期 
            timeout: 2592000
            # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
            activity-timeout: -1
            # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) 
            allow-concurrent-login: false
            # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) 
            is-share: false
            # token风格
            token-style: uuid

    4、创建主类

    在项目中新建包 com.pj ,在此包内新建主类 SaTokenDemoApplication.java,输入以下代码:

    @SpringBootApplication
    public class SaTokenDemoApplication {
        public static void main(String[] args) throws JsonProcessingException {
            SpringApplication.run(SaTokenDemoApplication.class, args); // run-->
            System.out.println("启动成功:sa-token配置如下:" + SaTokenManager.getConfig());
        }
    }

    5、运行

    运行代码,当你从控制台看到类似下面的内容时,就代表框架已经成功集成了

     

     

    仓库地址

  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/shengzhang/p/14224611.html
Copyright © 2011-2022 走看看