1 Star 0 Fork 67

xuzhou530 / shaun

forked from baomidou / shaun 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

一个基于pac4j的安全框架

特性:

  1. 功能简单,易于集成。
  2. 无 session。
  3. 使用凭证(token) 进行身份验证(默认是 jwt)。
  4. 前后端不分离下,能依托pac4j的各种client快速集成三方登录(redirect跳转那种),例如oauth(qq,微信) 和 cas。

模块简介

  • shaun-core: 核心包。
  • shaun-spring-boot-starter: spring boot 快速启动包。
  • shaun-test-cookie: 前后端不分离下的测试演示。
  • shaun-test-stateless-cookie: 前后端分离下使用cookie存token的测试演示。
  • shaun-test-stateless-header: 前后端分离下使用request header携带token的测试演示。

使用方法

  1. 引入shaun-spring-boot-starter。
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>shaun-spring-boot-starter</artifactId>
  <version>${version}</version>
</dependency>
  1. 登录后设置相关信息到SecurityManager。
@Service
@AllArgsConstructor
public class LoginServiceImpl implements LoginService {

    private final SecurityManager securityManager;

    @Override
    @Transactional
    public String login() {
        // 登录成功后把用户角色权限信息存储到profile中
        final TokenProfile profile = new TokenProfile();
        profile.setId(userId.toString());
        //profile.setRoles(roles);  
        //profile.setPermissions(permissions);
        //profile.addAttribute("key","value");
        final String token = securityManager.login(profile);
        return token;
    }
  1. 设置yml启动信息。
shaun:
  salt: 32位字符串,非必须字段
  exclude-path: # 排除具体的路径
    - /v2/api-docs  
    - /swagger-resources
    - /doc.html
  exclude-branch: # 排除以此路径开头
    - /webjars
  expire-time: '1d' # 不设置默认永久有效
  
 # jwt 超时时间 10s : 表示10秒有效
 #             10m 结尾: 表示10分钟有效
 #             10h 结尾: 表示10小时有效
 #             1d : 表示有效时间到第二天 00:00:00
 #             2d1h : 表示有效时间到第二天 01:00:00 
 #             d 后面 只支持上面三个(`s`,`m`,`h`)之一
  1. 注解拦截。

类似于shiro,shaun也默认支持使用注解在controller上拦截。

相关的注解有 @HasAuthorization @HasPermission @HasRole

@HasPermission(value = {"add","edit"},logical = Logical.BOTH) //权限必须同时存在
@HasPermission(value = {"add","edit"},logical = Logical.ANY)  //权限任一存在
  1. 前后端交互。

默认配置下 前端登录后需要把后端返回的token存下,后续接口的请求头带上Authorization。

后端可以通过 TokenProfile profile = ProfileHolder.getProfile(); 获得登录设置进去的用户信息。

如获得登录设置进token里的用户ID继续进行业务逻辑处理。

Long id= ProfileHolder.getProfile().getId();

空文件

简介

基于pac4j的安全框架 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/h_1_2/shaun.git
git@gitee.com:h_1_2/shaun.git
h_1_2
shaun
shaun
master

搜索帮助