ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简单易学sa-token快速搭建——权限认证《一》

2022-01-28 16:32:23  阅读:297  来源: 互联网

标签:StpUtil 登录 void Token token user sa 易学


快速搭建——权限认证《一》

环境搭建

sa-token官网文档
redis安装很简单,写入配置文件下面有实例,token存再redis中

AOP依赖注解实现方式再最后一个
实现:可以在具体方法中使用注解鉴权,不仅仅在controller上使用

在这里插入图片描述

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!-- 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>
        <!-- redis依赖包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--Sa-Token-Redis 集成包的版本尽量与 Sa-Token-Starter 集成包的版本一致-->
        <!-- Sa-Token 整合 Redis (使用jackson序列化方式) -->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-dao-redis-jackson</artifactId>
            <version>1.28.0</version>
        </dependency>
        <!-- 提供Redis连接池 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        
        <!-- Sa-Token整合SpringAOP实现注解鉴权 -->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-spring-aop</artifactId>
            <version>1.28.0</version>
        </dependency>

application-dev.yml

server:
  port: 30991
  servlet:
    context-path: /jay-admin

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/kuMing?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456789
  redis:
    # Redis服务器地址
    host: 127.0.0.1
    port: 6379
    # Redis数据库索引(默认为0)
    database: 1
    timeout: 5000
#    线程安全
    lettuce:
      pool:
        # 连接池最大连接数
        max-active: 200
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms
        # 连接池中的最大空闲连接
        max-idle: 10
        # 连接池中的最小空闲连接
        min-idle: 0
  jta:
    atomikos:
      datasource:
        xa-data-source-class-name:
#    两种redis方式,下面的线程不安全
#    jedis:
#      pool:
#        max-active: 50
#        max-wait: 3000
#        max-idle: 20
#        min-idle: 2
mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml
# Sa-Token配置
sa-token:
  # token名称 (同时也是cookie名称)
  token-name: satoken
  # token有效期,单位s 默认30天, -1代表永不过期
  timeout: 2592000
  # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
  activity-timeout: -1
  # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
  is-concurrent: true
  # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
  is-share: false
  # token风格
  token-style: random-128
  # 是否输出操作日志
  is-log: false
  sso:
    auth-url: http://sa-sso-server.com:9000/sso/auth

启动类:System.out.println(“启动成功:Sa-Token配置如下:” + SaManager.getConfig());

全局拦截规则

路由拦截规则

/**
 * @author Jay
 * @version V1.0
 * @Package com.shanghai.test1114.config
 * @date 2022/1/27 3:55 下午
 * 拦截器
 * 在高版本 SpringBoot (≥2.6.x) 版本下,需要额外添加 @EnableWebMvc 注解才可以使注册拦截器生效。
 * 拦截器模式和AOP模式不可同时集成
 */
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
    // 注册Sa-Token的注解拦截器,打开注解式鉴权功能
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册注解拦截器,并排除不需要注解鉴权的接口地址 (与登录拦截器无关)
        //registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");

        // 注册Sa-Token的路由拦截器
        //下面这种是只有登录后才可以访问其他接口,swagger放开可访问 路由拦截规则
        registry.addInterceptor(new SaRouteInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/user/doLogin","/swagger-ui.html/**","/swagger-resources/**")
        ;
    }

功能实现

@GetMapping("/doLogin")
StpUtil.login(user.getUsername()); 登录
StpUtil.logout(); 注销
StpUtil.kickout(RoolId); 踢下线

// 标记当前会话登录的账号id 
// 建议的参数类型:long | int | String, 不可以传入复杂类型,如:User、Admin等等
StpUtil.login(Object id);     

// 当前会话注销登录
StpUtil.logout();

// 获取当前会话是否已经登录,返回true=已登录,false=未登录
StpUtil.isLogin();

// 检验当前会话是否已经登录, 如果未登录,则抛出异常:`NotLoginException`
StpUtil.checkLogin()

方法返回值释义
登录:StpUtil.login(

标签:StpUtil,登录,void,Token,token,user,sa,易学
来源: https://blog.csdn.net/weixin_45883611/article/details/122731493

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有