一款轻量化快速认证授权框架

吴书松
吴书松
发布于 2025-12-23 / 8 阅读
0
0

一款轻量化快速认证授权框架

項目地址:https://gitee.com/wushusong/wss-auth

快速接入

1、引入依赖

        <dependency>
            <groupId>io.github.wushusong</groupId>
            <artifactId>wss-auth</artifactId>
            <version>1.0.2</version>
        </dependency>

2、增加配置

package com.wss.config;
import com.wss.auth.filter.WssAuthFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SecurityConfig {

    @Bean
    public WssAuthFilter wssSecurityFilter(){
        WssAuthFilter wssSecurityFilter = new WssAuthFilter();
        // 添加拦截的url
        wssSecurityFilter.addIncludeUrl("/**");
        // 添加放行的url
        wssSecurityFilter.addExcludeUrl("/test/t2");
        wssSecurityFilter.addExcludeUrl("/test/t3/*");
        return wssSecurityFilter;
    }
}

3、增加登录接口

package com.wss.controller;

import com.wss.auth.annotation.WssIgnore;
import com.wss.auth.utils.WssAuthUtils;
import com.wss.common.core.collection.ListUtils;
import com.wss.result.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@WssIgnore
@RestController
@RequestMapping(value = "/auth")
public class LoginController {

    @PostMapping(value = "/login")
    public R<?> login(@RequestParam(value = "username")String username,
                      @RequestParam(value = "password")String password){

        //TODO 自己校验账号密码

        List<String> permission = ListUtils.addAll("sys_log_view", "sys_log_save");
        List<String> role = ListUtils.addAll("admin", "user");

        String token = WssAuthUtils.login("1", permission, role, null);
        return R.ok(token);

    }

    @PostMapping(value = "/getLoginInfo")
    public R<?> getLoginInfo(){
        return R.ok(WssAuthUtils.getTokenInfo());
    }

}

4、增加测试接口

package com.wss.controller;

import com.wss.auth.annotation.WssCheckPermission;
import com.wss.auth.annotation.WssIgnore;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/test")
public class TestController {

    @GetMapping(value = "/t1")
    public Object t1(){
        return "success";
    }

    @GetMapping(value = "/t2")
    public Object t2(){
        return "success";
    }

    @GetMapping(value = "/t3/t1")
    public Object t3(){
        return "success";
    }

    @WssCheckPermission(value = {"sys_log_view"})
    @GetMapping(value = "/t4")
    public Object t4(){
        return "success";
    }

    @WssCheckPermission(value = {"sys_log_edit"})
    @GetMapping(value = "/t5")
    public Object t5(){
        return "success";
    }

    @WssIgnore
    @GetMapping(value = "/t6")
    public Object t6(){
        return "success";
    }

}

5、yml配置

# 应用服务 WEB 访问端口

server:
  port: 31002
wss:
  tokenType: redis # jwt/redis
  tokenExpire: 1 # 小时
  jwt:
    security: 2IDHJfWYZtInDeJ1 # 16字节的密钥

spring:
  redis:
    host: jm-cloud-redis
    port: 6379
    # 数据库索引
    database: 3
    # 密码
    password: 123456
    # 默认使用 lettuce 连接池
    lettuce:
      pool:
        max-active: 18 #连接池最大连接数,为负数则没有限制
        max-idle: 16 #连接池最大空闲连接
        min-idle: 0 #连接池最小空闲连接
        max-wait: 5000 #连接池最大阻塞等待时间,为负数则没有限制
        shutdown-timeout: 1000 #关闭超时时间

6、测试


评论