shaun 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
shaun 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: Apache
开发语言: Java
操作系统: 跨平台
收录时间: 2020-01-16
提 交 者: 青苗

基于 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 JwtProfile profile = new JwtProfile();
        profile.setId(userId.toString());
        if (roles.contains(AdminConst.SUPER_ADMIN)) {
            isAdmin = true;
        } else {
            profile.setPermissions(permissionService.selectPermissionsByUserId(userId).stream()
                    .filter(x -> Objects.nonNull(x.getCode())).map(SysPermission::getCode).collect(Collectors.toSet()));
            profile.setRoles(new HashSet<>(roles));
        }
        final String token = securityManager.login(profile, isAdmin);
        return token;
    }
  1. 设置yml启动信息。
shaun:
  salt: d614a4fdff6540c1a5b730afc5f9cc8f #非必须
  exclude-path:
    - /v2/api-docs
    - /swagger-resources
    - /doc.html
  exclude-branch:
    - /wechat-auth
    - /webjars
  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(); 获得用户信息。

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

shaun 的相关资讯

还没有任何资讯

shaun 的相关博客

数据结构-08-集合(Set)-哈希表(Hash)-图(Map)

##Set Set 是一种用于保存**不重复元素**的数据结构。常被用作测试归属性,故其查找的性能十分重要。 Set 是python自带的基本...

数据结构-01-字符串(String)

>本笔记都是用python来演示数据结构和算法的示例,万变不离其宗,其他语言的数据结构和算法的思想都是相同的,只不过是换了一...

怎样在ROS下实现基于YOLO的px4无人机目标检测?

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 1. 搭建无人机仿真环境 首先需要安装mavros,这是一...

一些资源

一些资源 发表于 2012 年 12 月 07 日 由 windflyer ELF文件格式 1. ELF文件格式分析 http://os.pku.edu.cn:8080/gaikuang/s...

Boots turn into common, comfy

Boots turn into common, comfy becom buyers' initial decision. Personality is youngers' seek out. The aim of champion ...

Lovie Johnson: Buccaneers' crime 'not necessarily

Lovie Johnson: Buccaneers' crime 'not necessarily ready

基于ZooKeeper实现简单的服务注册于发现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.cs...

使用CSS3的appearance属性改变元素的外观

前段时间在《修复iPhone上submit按钮bug》中介绍了使用“-webkit-appearance: none; ”来改变按钮在iPhone下的默认风格,其实...

使用CSS3的appearance属性改变元素的外观

前段时间在《修复iPhone上submit按钮bug》中介绍了使用“-webkit-appearance: none; ”来改变按钮在iPhone下的默认风格,其实...

最近C++又有什么新花样?六款新上线的C++开源项目推荐

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以...

shaun 的相关问答

还没有任何问答,马上提问

评论 (2)

加载中
ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇
01/16 13:58
回复
举报
ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇 ଘ_ଘ哇
01/16 11:40
回复
举报
更多评论
2 评论
4 收藏
分享
返回顶部
顶部