一、是什么

很多项目都会用到权限管理,目前流行的权限框架(Apache Shiro,Spring Security等)在使用的时候都觉得很繁琐,特别是在一些小型的项目中。有时候我会想,如果通过注解的方式,直接把权限注解到访问的接口方法上那该有多好。
authorize就是一个为了解决这个问题,通过注解配置权限,借助拦截器进行权限检查的一个开源权限框架。使用起来就像下面这种感觉。

@Access("manage")
@RequestMapping("index")
public String index() {return "this is index page";
}

@Access是这个框架的注解。通过注解配置权限的方式,解决权限认证的问题,不管是写代码还是读代码,都感觉更清晰了许多。

二、如何用

2.1 快速使用

可以参照示例authorize-demo

2.1.1 引入maven依赖

<dependency><groupId>com.github.sunbufu</groupId><artifactId>authorize-starter</artifactId><version>1.0.0-RELEASE</version>
</dependency>

2.1.2 实现IAuthorizeService

IAuthorizeService的实现类中,至少应该实现3个方法:

  1. 登录方法:登录成功后,把用户信息存放到session
  2. 鉴权方法(authorize):通过比对用户和请求方法的权限,返回该用户是否可以访问
  3. 鉴权失败方法(authorizeFail):用户没有权限时,需要进行的处理方法

登录:

public User logIn(String userName, String passWord, HttpSession session) {User user = users.get(userName);if (!user.getPassWord().equals(passWord)) {return null;}session.setAttribute(USER_SESSION_KEY, user);return user;
}

鉴权:

@Override
public boolean authorize(String[] access, HttpSession session) {User user = (User) session.getAttribute(USER_SESSION_KEY);if (user != null && user.getAccess() != null && user.getAccess().isEmpty()) {for (String requestAccess : access) {if (user.getAccess().contains(requestAccess)) {return true;}}}return false;
}

鉴权失败:

@Override
public void authorizeFail(HttpServletRequest request, HttpServletResponse response) {response.sendRedirect("authorizeError?message=your account have not enought authority");
}

2.1.3 通过注解配置到controller

@Access("manage")
@RequestMapping("index")
public String index() {return "this is index page";
}

2.1.4 完成

authorize的目的是借助注解,快速的完成一些简单的权限管理功能,所以从使用到配置上力争尽量的简单、快捷。
完整示例地址authorize-demo。

2.2 框架介绍

authorize框架主要包括authorize-coreauthorize-starter

2.2.1 authorize-core

authorize-core是整个框架的核心和主要的逻辑部分,主要包括注解Access、拦截器AccessInterceptor、权限认证接口IAuthorizeService

  1. IAuthorizeService主要包括3个方法的声明,其中有2个方法必须实现:authorize(鉴权)和authorizeFail(鉴权失败),1个方法选择实现:authorizeSuccess(鉴权成功)。
  2. AccessInterceptor会拦截所有的请求,并对注解@Access的进行鉴权。首先会把注解在controller上的权限和注解在具体方法上的权限合并,然后调用IAuthorizeService实现类的鉴权方法authorize。成功调用authorizeSuccess(鉴权成功),失败则调用authorizeFail(鉴权失败)。

2.2.2 authorize-starter

authorize-starter是为spring boot提供的一个快速配置。主要是配置了authorize-core的拦截器AccessInterceptor

三、总结

authorize是为了快速便捷进行权限管理的开源框架,在github上开源地址是https://github.com/sunbufu/sunbufu-authorize。欢迎大家关注、加星,也欢迎大家随时联系我sunyoubufu@qq.com,谢谢。

authorize(基于注解的权限认证框架)相关推荐

  1. Spring Security太复杂?试试这个轻量、强大、优雅的权限认证框架!

    各位程序猿小伙伴们,中秋快乐~在节日欢快的气氛中大家是不是还在奋笔疾书.沉浸在学习的海洋中呢? 小编这两天休息在家一直在想一个问题,那就是我们在开发SpringBoot项目的时候,该怎么做好权限认证呢 ...

  2. SpringBoot集成权限认证框架(Sa-Token)

    SpringBoot集成权限认证框架(Sa-Token) 介绍 身份验证又称"验证"."鉴权",是指通过一定的手段,完成对用户身份的确认. 身份验证的目的是确认 ...

  3. 这可能是史上功能最全的 Java 权限认证框架!

    点击关注公众号,回复"1024"获取2TB学习资源! 今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框架! Sa-Token 介绍 Sa-Token是 ...

  4. 这可能是史上功能最全的Java权限认证框架!

    点击关注公众号,Java干货及时送达 今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框架! 这个开源项目就是:sa-token . Sa-Token是什么? sa-tok ...

  5. 再见Spring Security!推荐一款功能强大的权限认证框架,用起来够优雅!

    ‍ ‍在我们做SpringBoot项目的时候,认证授权是必不可少的功能!我们经常会选择Shiro.Spring Security这类权限认证框架来实现,但这些框架使用起来有点繁琐,而且功能也不够强大. ...

  6. java认证框架_sa-token 一个的JavaWeb权限认证框架,强大、简单、好用

    sa-token是什么? 一个的JavaWeb权限认证框架,强大.简单.好用 与其它权限认证框架相比,sa-token尽力保证两点: 上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖 ...

  7. ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...

    1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...

  8. 再见Spring Security、推荐一款功能强大的权限认证框架

    Sa-Token简介 Sa-Token是一款轻量级的Java权限认证框架,可以用来解决登录认证.权限认证.Session会话.单点登录.OAuth2.0.微服务网关鉴权等一系列权限相关问题. 框架集成 ...

  9. .Net Core手撸一个基于Token的权限认证

    说明 权限认证是确定用户身份的过程.可确定用户是否有访问资源的权力 今天给大家分享一下类似JWT这种基于token的鉴权机制 基于token的鉴权机制,它不需要在服务端去保留用户的认证信息或者会话信息 ...

最新文章

  1. 目标检测的渐进域自适应,优于最新SOTA方法
  2. 《数学之美》第18章 闪光的不一定是金子--谈谈搜索引擎反作弊问题和搜索结果的权威性问题
  3. GNU make manual 翻译(一)
  4. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...
  5. CMake基础 第4节 动态库
  6. 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
  7. 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则
  8. Effective C++ 读书笔记之Part6.Inheritance and Object-Oriented Design
  9. c#学习笔记---BackgroundWorker 详解
  10. netty权威指南 微云_《Netty权威指南》(二)NIO 入门
  11. Lowest Common Ancestor of a Binary Tree
  12. 浅析ERP系统--财务
  13. 学习软件技术的五大技巧
  14. 安卓手机测评_鲁大师又在找事?一季度安卓系统流畅度排名出炉,小米MIUI吊车尾...
  15. Kaggle所有量化金融竞赛汇总。
  16. C++简单输入输出-计算火车运行时间
  17. 2018年中国农业机器人大赛海报展示
  18. 《Spring实战》读书笔记-第3章 高级装配,最新Java大厂高频面试题
  19. 在配置Maven阿里云镜像时遇到的问题
  20. c语言添加字库,如何添加新的字库

热门文章

  1. Linux虚拟机网络网卡配置nmcli用法命令详解
  2. 汉斯摩根索《国际纵横策论》对现实有什么重要意义,尽可能多写一点
  3. Matlab中调用文件夹中子文件夹内.m文件的方法
  4. R语言中的复制符号-和=
  5. ChatExcel--自动处理表格
  6. 【工具集】【后端】【EasyExcel】动态Excel模版生成Excel
  7. python---6行代码,画花
  8. 基于ssm框架旅游线路景点网站系统
  9. python setup.py egg_info did not run successfully. Preparing metadata (pyproject.toml) did not run
  10. 2021年特色导航网站大全已更新,值得你一览收藏本页