springboot2+shiro 重写filter接口来调用自定义ream的登录校验方式
本模式采用了springboot2+shiro 前后端分离的模式来做一个简易的用户权限管理系统
1.maven引用pom.xml
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
2.shiroConfig.java配置
这里重写filter类,并作为所有路径检验的规则入口
这里介绍几个常用的方法
1:protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception {}
获取前端传递的token值(从httpServletRequest中获取),并生成自定义的token对象,用于shiro鉴权的令牌token
2:protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {}
检验请求是否允许通过,false 继续执行onAcessDenied()方法继续下一步校验,true 直接授权完成
3:protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {}
校验请求已经完成授权,通常用于token是否过期,权限操作是否允许通过
4:protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) {}
登录失败后返回的错误信息,此处采用了json格式,异步信息返回
5:protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {}
登录检验操作之前的token生成,并完成login操作(token校验),如果true,就执行自定义ream的doGetAuthenticationInfo方法做用户账号密码校验。如果false,则调用onLoginFailure返回登录失败消息。
6: protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception {}
登录校验成功后返回的信息,json异步消息提示
7: public boolean isPermitted(String permission) {}
isPermitted 系统方法用来验证当前操作是否有某个操作权限
可配合自定义realm中的重写isPermitted 使用,获取doGetAuthorizationInfo中的角色列表,权限列表的数据做过滤操作
自定义realm重写isPermitted方法
springboot2+shiro 重写filter接口来调用自定义ream的登录校验方式相关推荐
- swagger 集成 restful接口 使用Spring Security + jwt 进行token校验 根据用户 token 将对应的id注入到controller 指定参数中
实现 根据用户 tokin 将对应的id注入到controller 指定参数中 springboot引入 类 WebMvcConfig 继承 WebMvcConfigurerAdapter 实际上是 ...
- php调用sap端rfc接口,SAP 接口编程之 RFC 系列(15) : 调用自定义函数
从外部环境调用自定义函数 (FM, Function Module)与调用 SAP 内置的函数并没有不同,需要注意的是在 SAP 系统自定义 FM 的要点: 1)FM 必须是 Remote-enabl ...
- springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步: 1. 在项目中导入maven依赖 <dependency><groupId> ...
- Java学习日志Day41_过滤器Filter 接口_项目更新:后台管理/前台统一处理全局乱码and用户列表---删除以及分页功能
一.过滤器Filter 接口 1.导包: <groupId>com.qf</groupId> <artifactId>FilterAndJquery</art ...
- Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)
1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...
- 【Flutter】自定义 Flutter 组件 ( 创建自定义 StatelessWidget、StatefulWidget 组件 | 调用自定义组件 )
文章目录 一.Flutter 组件简介 二.Flutter 自定义 StatelessWidget 组件流程 1.导入父类包 2.选择继承的父类 3.设置成员变量及构造函数 4.重写 build 方法 ...
- COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
原文:http://www.vckbase.com/index.php/wv/1236 一.前言 前段时间,由于工作比较忙,没有能及时地写作.其间收到了很多网友的来信询问和鼓励,在此一并表示感谢.咳. ...
- 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)
今天想实现一个Search Product的功能,首先要将数据展示在页面,然后前端根据查询需求进行处理.之前是在salesforce中实现的,可以定义一个Search Product的页面,然后在页面 ...
- java自定义接口注解,Java自定义注解原理及实现
本章主要内容:1.了解注解原理,2,自定义注解(根据实际应用自定义注解打印每个接口的请求日志) 一, 了解注解原理 元注解 元注解的作用就是注解其他注解,一般我们使用自定义注解时,就需要用元注解来标注 ...
- 普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断、验证验证码的正确性(下)
普歌-结合腾讯云短信服务+node搭建一个简单的发送短信web小项目 涉及技术: 腾讯云服务 后端服务:node+express 前端搭建:html+js 前言:本来这篇博客应该很早就发了,中间有一些 ...
最新文章
- MySQL 仅保留7天、一个月数据
- 一项横断面人群研究中比较放射学阴性的中轴脊柱关节炎患者与强制性脊柱炎患者之间的差别...
- PTP NTP kernel 驱动讲解 (未完待续)
- 文件输入输出和string流
- 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
- (9)Node.js 内置模块
- 管家机器人先生txt_《管家机器人先生》(主角墨青如玉)大结局全文阅读
- java对象json序列化时忽略值为null的属性
- Hadoop Yarn源码 - day1
- 阿里巴巴 EasyExcel (web版) 上传与下载(超详细) Excel上传下载
- 第一、三、四届(2010、2012、2013)山东省ACM
- 2011网站域名信息备案/报备流程详讲(新版)(原创)
- 数据库实验一——数据库定义与操作语言实验
- JS基础知识(二十八):箭头函数
- 支付宝 手机页面支付 集成 出现 “系统繁忙,请稍后再试”
- html八边形怎么显示,如何用几何画板自定义工具画正八边形
- 贝壳云php源码,贝壳云P1刷Armbian系统后的折腾笔记
- Ardunio开发实例-ENC28J60以太网模块实现Web服务器
- 点融网落地区块链应用项目,与富士康合作只是开端
- 排列(permutation)
热门文章
- Golang验证身份证号码是否有效
- 无线路由器显示无服务器,路由器没信号怎么办?三招教你解决问题!
- C++11Lambda表达式捕获变量(Capturing the Variable)与本地变量(Local Variable)
- 开源:安卓手机app控制arduino,通过esp8266-01
- qt for android 中无法运行和调试应用程序,No Device Found,The adb tool in the Android SDK lists all......
- 报错:Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension
- 开源项目——小Q聊天机器人V1.5
- 广义相对论基础【2】广义相对论中的张量+张量代数
- 浏览器控制台操作——随身笔记
- U-boot下编写代码对SPI flash进行操作