shiro(授权)使用记录

36 篇文章 0 订阅
4 篇文章 0 订阅
在spring配置文件中开启注解配置支持:
	<!-- 开启shiro注解配置支持 -->
	<bean id="defaultAdvisorAutoProxyCreator" 
		class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
		<property name="proxyTargetClass" value="true"/>
	</bean>
	<!-- 配置shiro切面类 -->
	<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"></bean>
Action方法中添加注解@RequiresPermissions("对应权限字符串"),例如:
	/**
	 * 新增取派员
	 * @return
	 */
	@RequiresPermissions("staff-add")
	public String add(){
		staffService.save(model);
		return LIST;
	}
在struts.xml中配置全局异常捕获:
		<!-- 声明全局结果集 -->
		<global-results>
			<result name="login">/login.jsp</result>
			<!-- 权限不足处理页面 -->
			<result name="unauthorized">/unauthorized.jsp</result>
		</global-results>
		
		<!-- 配置全局异常处理 -->
		<global-exception-mappings>
			<!-- 权限不足异常 -->
			<exception-mapping result="unauthorized" exception="org.apache.shiro.authz.UnauthorizedException" />
		</global-exception-mappings>
使用shiro标签库控制界面元素:

    1、引入shiro标签库

        <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>

    2、使用shiro标签

        <shiro:hasPermission name="对应权限字符串">

              需要授权的页面元素......

        </shiro:hasPermission>

BOSRealm(重写doGetAuthorizationInfo(PrincipalCollection principalCollection)方法):
@Override
	//授权
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
		SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
		User user = (User) SecurityUtils.getSubject().getPrincipal();
		//根据当前用户,获取对应权限
		List<Function> list = null;
		if(user.getUsername().equals("admin")){
			//添加系统管理员独有权限
			info.addStringPermission("admin");
			DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Function.class);
			//为系统管理员加载所有权限
			list = functionDao.findByCriteria(detachedCriteria);
		}else{
			list = functionDao.findFunctionByUserid(user.getId());
		}
		
		for (Function function : list) {
			info.addStringPermission(function.getCode());
		}
		
		return info;
	}


关于将权限数据加载到缓存中:

一、导入jar包(pom.xml)
		<!-- 引入ehcache的依赖 -->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache-core</artifactId>
			<version>2.6.6</version>
		</dependency>
二、准备ehcache配置文件
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    <!-- 配置临时文件目录位置 -->
    <diskStore path="java.io.tmpdir"/>
    
    <!-- 
 	   	相关属性配置:
 	   		maxElementsInMemory : 在内存中最多可存储的元素(即多少个JAVA对象)
 	   		eternal : 缓存的数据是否永久有效
 	   		timeToIdleSeconds : 最大空闲时间(单位:秒),超时将清理缓存数据
            timeToLiveSeconds : 最大有效时间(单位:秒),超时将清理缓存数据
            overflowToDisk : 内存溢出存入磁盘,即存入临时文件目录
            maxElementsOnDisk : 存入磁盘的元素最大值
            diskPersistent : 重启服务器时,磁盘上的数据是否持久化
            diskExpiryThreadIntervalSeconds : 缓存清理线程的执行周期,即每多少秒清理一次多余的失效的数据
            memoryStoreEvictionPolicy : 淘汰策略(LRU->最近最少优先。   FIFO->先进先出)
     -->
    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            />
</ehcache>
三、在spring配置文件中配置缓存管理器,并将其注入到shiro框架的安全管理器中




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shiro 1.7.1 的依赖包括: - slf4j-api: 用于日志记录的简单日志门面,Shiro 使用 SLF4J 进行日志记录。 - ehcache-core: 一个 Java 缓存框架,Shiro 使用 Ehcache 提供缓存功能。 - javax.servlet-api: Java Servlet 的 API,Shiro 可以与 Servlet 容器集成。 - javax.servlet.jsp-api: Java Server Pages (JSP) 的 API,Shiro 可以与 JSP 集成。 - javax.servlet.jstl-api: JSP Standard Tag Library (JSTL) 的 API,Shiro 可以与 JSTL 集成。 - junit: 用于编写单元测试的 Java 测试框架,Shiro 使用 JUnit 进行单元测试。 - commons-beanutils: Apache Commons BeanUtils,用于操作 JavaBean,Shiro 使用 BeanUtils 进行对象属性的拷贝等操作。 此外,还有一些可选的依赖,例如: - jasypt: 用于加密和解密的 Java 库,Shiro 可以使用 Jasypt 进行密码加密。 - bouncycastle: 一个开源的加密库,Shiro 可以使用 BouncyCastle 进行加密和解密操作。 - spring-core: Spring Framework 的核心模块,Shiro 可以与 Spring 集成。 - spring-web: Spring Framework 的 Web 模块,Shiro 可以与 Spring MVC 集成。 ### 回答2: Shiro 1.7.1是一个Java安全框架,它基于身份验证、授权、密码和会话管理等功能,以帮助开发者快速构建安全可靠的应用程序。 Shiro 1.7.1有一些依赖,包括以下几个主要的依赖项: 1. slf4j:Shiro使用slf4j作为日志接口,允许开发者使用其喜欢的具体日志实现进行日志记录。 2. logback:logback是一个流行的Java日志框架,可以与Shiro一起使用记录应用程序的日志信息。 3. Apache Commons:Shiro还依赖于Apache Commons项目中的一些核心工具类,例如Apache Commons Collection等。 4. Apache Maven:Maven是一个软件项目管理工具,开发者可以使用它来构建和管理Shiro项目的依赖项。 除了以上列出的主要依赖项外,Shiro还可能有其他依赖项,这取决于您在项目中使用Shiro时的具体配置和要求。您可以通过查看Shiro的官方文档或源代码中的pom.xml文件来获取完整的依赖列表。 ### 回答3: Shiro 1.7.1 是 Apache Shiro 安全框架的一个版本。Apache Shiro 是一个用于身份验证、授权、加密和会话管理的开源安全框架,为Java应用程序提供安全功能。它是一个强大而灵活的框架,可以轻松地集成到各种Java项目中。 Apache Shiro 的1.7.1版本是在Shiro的1.x系列中的一个特定版本。这个版本具有改进的稳定性、性能和安全性,并修复了之前版本中可能存在的一些错误和漏洞。它还有一些新的功能和增强,以提升用户体验和开发效率。 Shiro 1.7.1 是基于Java语言开发的,依赖于一些其他的Java库和框架。其中包括 JavaSE(Java标准版)的依赖,如Java集合框架(Java Collections Framework)和Java多线程(Java Concurrency)等。此外,还有其他一些常见的依赖,如Apache Commons库和Slf4j(Simple Logging Facade for Java)等。 总的来说,Shiro 1.7.1 是依赖于一系列JavaSE的标准库和其他常见的Java库和框架的。这些依赖项为Shiro提供了在进行身份验证、授权和会话管理等任务时所需的基本功能和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值