shiro的受权管理
[今日课程大纲]
Shiro实现授权
菜单授权
视图授权.
[知识点详解]
- 解决点击浏览器回退按钮无法再次登录问题
- 在控制器中编写退出的方法
/** * 发送ajax请求,执行退出 * @return */ @RequestMapping("ajaxLogout") @ResponseBody public int ajaxLogout(){ SecurityUtils.getSubject().logout(); System.out.println("执行退出"); return 0; } |
- 在登录页面jsp中发送ajax请求.
- 如果自定义Filter实现URL权限验证
- 新建类继承
public class MyValidateCodeFilter extends AuthenticationFilter{ @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { String validateCode = request.getParameter("validateCode"); Object obj = ((HttpServletRequest)request).getSession().getAttribute("validateCode"); System.out.println("obj:"+obj); System.out.println("validateCode:"+validateCode); if(!validateCode.equals(obj.toString())){ System.out.println("阻止了"); response.setContentType("application/json;charset=utf-8"); PrintWriter out = response.getWriter(); out.print("5"); return false; } return true; } } |
- 在applicationContext-shiro.xml中配置自定义类的<bean>
<bean id="myValidateCodeFilter" class="com.bjsxt.manage.filter.MyValidateCodeFilter"></bean> |
- 在ShiroFilterFactoryBean声明出哪个<bean>是shiro的filter
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"></property> <property name="filters"> <map> <entry key="validateCodeFilter" value-ref="myValidateCodeFilter"></entry> </map> </property> <property name="loginUrl" value="/login"></property> <property name="successUrl" value="/loginSuccess"></property> <property name="filterChainDefinitions"> <value> /login=validateCodeFilter,authc /**=anon </value> </property> </bean> |
- 授权
- 在Shiro中可以通过
- JAVA代码方式
- subject.hasRole()
- subject.isPermitted()
- JSP标签
- JAVA代码方式
1.2.1 导入标签库
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> |
1.2.2 使用
<shiro:hasRole name="管理员"> <a id="btn" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">注册新用户</a> </shiro:hasRole> |
- 注解
1.3.1 写在java代码方法上
@RequiresRoles("") |
- 都会触发自定义Realm的doGetAuthorizationInfo,方法中需要给返回值中添加用户所具有的角色或权限等.
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // TODO Auto-generated method stub // // SecurityUtils.getSubject().hasRole(""); // SecurityUtils.getSubject().isPermitted("") Users user = (Users) principals.getPrimaryPrincipal(); SimpleAuthorizationInfo info= new SimpleAuthorizationInfo(); List<Role> list = user.getRoles(); for (Role role : list) { System.out.println(role.getName()); info.addRole(role.getName()); } // info.addStringPermission(permission); return info; } |
shiro的受权管理相关推荐
- shiro的会话管理:介绍
Shiro中的会话管理 在shiro里所有的用户的会话信息都会由Shiro来进行控制,shiro提供的会话可以用于JavaSE/JavaEE环境,不依赖于任何底层容器,可以独立使用,是完整的会话模块. ...
- spring boot整合shiro继承redis_spring-boot-plus集成Shiro+JWT权限管理
SpringBoot+Shiro+JWT权限管理 Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 使用Shiro的易于理解的API,您可以 ...
- 【Shiro】shiro的Session管理
[Shiro]shiro的Session管理 1. Session管理介绍 2. JavaSE环境下 3. JavaEE环境下 4. Session监听 5. Session检测 1. Session ...
- 《SpringBoot与Shiro整合-权限管理实战---从构建到模拟数据库登入》
<SpringBoot与Shiro整合-权限管理实战> ---- 从构建到模拟数据库登入 ---- 点击下载源码 ---- 或者查看? 文章目录 <SpringBoot与Shiro整 ...
- 如何在 Spring Boot 中用 Shiro 实现权限管理
本行 Chat 内容包括: 简单介绍 IntelliJ IDEA 的安装与注册 什么是 Spring Boot? 如何通过 IDEA 创建一个简单的 Spring Boot 项目 Apache Shi ...
- Shiro之权限管理的概念
文章目录 前言:什么是shiro 一.什么是权限管理? 举例 二.权限管理的具体分类 1.身份认证 2.授权 总结 前言:什么是shiro Apache Shiro 是一个开源安全框架,提供身份验证. ...
- SpringBoot整合Shiro实现权限管理,经典实战教程
String username = authenticationToken.getPrincipal().toString(); if(!username.equals("zhang&quo ...
- SpringBoot + Redis + Shiro 实现权限管理
文章主要是针对shiro进行权限配置,只针对角色进行了权限过滤. GitHub:https://github.com/stevencxb/blog 数据库脚本 -- ----------------- ...
- 个人笔记 springboot整合shiro实现权限管理,前端使用vue 10155
转载自github,地址https://github.com/Heeexy/SpringBoot-Shiro-Vue 目录结构: application.yml spring:datasource:u ...
- Shiro系统权限管理、及原理剖析
1.简介 常用的Java EE安全框架有shiro.spring security.shiro被应用非常广泛,可以集成cas,搭建单点登录系统.spring security则被认为比较重,应用没有s ...
最新文章
- R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
- selenium WebDriverException: Message: unknown error: DevToolsActivePort file doesnt exist
- C语言中,#include 和#include 的区别和注意点
- 计算机网络第六章:应用层
- 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean
- 信息传递服务器,AJAX的与服务器之间的信息传递原理(初学)
- Neo4j简单的样例
- Spring Boot定时任务-Quartz基本使用
- 每日一题(14)—— 交换a,b的值(不使用中间变量)
- Golang 连接池的几种实现案例
- java ee会话_Java EE会话技术Cookie和Session
- 参加了博客园北京俱乐部4月4日的活动-Nice
- css flex布局 padding,css三栏布局的三种实现方式(圣杯布局、双飞翼布局、Flex布局)...
- 如何制作双层PDF文档?其实只需简单一步!
- 自动升级WordPress失败解决方法
- kube-scheduler源码分析(三)之 scheduleOne
- 轻松查询多个中通速递发出物流中含有某个城市的单号
- 选股小技巧|如何选股
- 用mysql查询图书的信息_PHP+MySQL 利用mysql_fetch_row模糊查询图书信息
- 跨设备链路聚合 M-LAG
热门文章
- 如何查看电脑上曾记录的账号密码
- 电子邮件接受服务器的端口是,qq电子邮件服务器是什么?端口多少?安全类型是什么?路径前缀是什...
- 关于12306网站抢票的架构设计
- 马原复习知识点背诵-《马克思主义基本原理概论》
- 考研政治|马克思主义基本原理
- 阿里云网盘资源免费分享论坛正式上线
- 天然气阶梯是按年还是按月_燃气阶梯是一年一清吗 燃气阶梯的定义
- Fabric 1.0源代码分析(39) policy(背书策略)
- Python 逐行读取txt文件,批量下载文件
- 英文论文评审意见_艾德思:英文论文审稿意见模板