shiro的权限加载从上到下,按照map的特性,key(url相同的会被下面覆盖掉),利用这种特性,可以在数据库中设好其为菜单,在管理员设置好了权限内的菜单之后,其就在权限控制中,而且会显示,(要在权限控制中的先要有一个角色(管理员)勾选好),至于需要显示的菜单有不希望有
权限控制的可以在动态加载最后静态设置一次覆盖掉
同时注意静态资源不可纳入权限的控制内,
在最后设置/**(余下的)都进入权限控制(这样设置的必要是所有的地址(除了静态资源)都纳入了shiro,这样任何一个请求方法都会拿到shrio的上下文及其中的用户信息,不会出现有的求情,拿不到shiro登录信息,
做不了相应业务需求报错null
)设置anon也有这种效果---不需要登录,有shiro上下文
/**
* ShiroFilterFactoryBean 处理拦截资源文件问题。
* 注意:单独一个ShiroFilterFactoryBean配置是或报错的,因为在
* 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager
*
Filter Chain定义说明
1、一个URL可以配置多个Filter,使用逗号分隔
2、当设置多个过滤器时,全部验证通过,才视为通过
3、部分过滤器可指定参数,如perms,roles
*
*/
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager){
System.out.println("ShiroConfiguration.shirFilter()");
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 必须设置 SecurityManager
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
shiroFilterFactoryBean.setLoginUrl("/login");
// 登录成功后要跳转的链接
shiroFilterFactoryBean.setSuccessUrl("/index");
//未授权界面;
shiroFilterFactoryBean.setUnauthorizedUrl("/403");
//拦截器.
Map<String,String> filterChainDefinitionMap = new LinkedHashMap<String,String>();
//配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了
filterChainDefinitionMap.put("/logout", "logout");
filterChainDefinitionMap.put("/css/**","anon");
filterChainDefinitionMap.put("/js/**","anon");
filterChainDefinitionMap.put("/img/**","anon");
filterChainDefinitionMap.put("/font-awesome/**","anon");
filterChainDefinitionMap.put("/favicon.ico","anon");
filterChainDefinitionMap.put("/users/reecover","anon");
//<!-- 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了;
//<!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问-->
//自定义加载权限资源关系
List<Resources> resourcesList = resourcesService.queryAll();
for(Resources resources:resourcesList){
if (StringUtil.isNotEmpty(resources.getResurl())) {
String permission = "perms[" + resources.getResurl()+ "]";
filterChainDefinitionMap.put(resources.getResurl(),permission);
}
}
// filterChainDefinitionMap.put("/**", "authc");
filterChainDefinitionMap.put("/rule/**","anon");
filterChainDefinitionMap.put("/urule/**","anon");
filterChainDefinitionMap.put("/urule/loadknowledge","anon");
filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}
相关推荐
在这个"shiro权限案例demo"中,我们将深入探讨Shiro如何实现用户权限的管理。 首先,让我们了解Shiro的核心组件: 1. **Subject**:是Shiro的中心概念,代表了当前“安全的用户”。它提供了进行认证、授权、会话...
在本文中,我们将深入探讨Apache Shiro的基础配置和代码实现,以帮助你理解如何有效地使用Shiro进行权限控制。 **1. Shiro架构组件** Shiro的核心组件包括:Subject、Realms、Caches、Session Manager、...
Spring Boot 和 Apache Shiro 的整合是企业级应用中常见的权限认证和安全管理方案。Spring Boot 提供了简化 Java 应用程序开发的框架,而 Shiro 是一个轻量级的安全框架,专注于身份验证、授权、会话管理和加密。...
在这个“shiro权限管理案例加文档”中,我们很可能会找到关于如何在实际项目中应用Shiro进行权限控制的详细教程和实例。 **一、Shiro基础** Shiro的核心组件包括:Subject(主体)、Realms(域)、Cryptography...
在本文中,我们将深入探讨Shiro权限管理的相关知识点,以及如何利用它来实现高效的安全控制。 1. **Shiro基础概念** - **身份验证(Authentication)**:确认用户身份的过程,通常涉及用户名和密码的校验。 - **...
本文将深入探讨"Springboot+shiro权限管理"的主题,旨在提供最详尽、最清晰的理解路径。 首先,Spring Boot 是一个基于 Spring 框架的轻量级开发工具,它简化了初始化、配置以及运行Spring应用程序的过程。Spring ...
缓存可以提高查询数据性能, 对同一批数据进行多次查询时, 第一次查询走数据库, 查询数据后,将数据保存在内存中,第二次以后查询 可以直接从内存获取数据,而不需要 和数据库进行交互。
本示例将深入讲解Shiro在权限管理中的应用。 首先,我们要理解Shiro的核心概念。`认证`是验证用户身份的过程,通常涉及用户名和密码的匹配。`授权`则是确定用户是否拥有执行特定操作的权限,即权限管理。Shiro通过...
在“ssm-shiro权限管理(二)”中,我们将深入探讨如何在Shiro的基础上进一步优化登录流程、实现缓存管理和动态权限分配。Shiro是一个强大且易用的Java安全框架,提供了认证、授权、会话管理和加密等功能,为应用...
在这个"shiro权限框架示例"中,我们可以深入学习Shiro的核心功能及其在实际项目中的应用。 1. **Shiro框架介绍** Apache Shiro 并非一个完整的安全框架,而是专注于应用程序的安全控制层,它不涉及网络协议或底层...
SSM+Shiro权限管理Demo是一个综合性的项目实例,它结合了Spring、Spring MVC(SSM)和Apache Shiro框架来实现一个完善的权限控制体系。这个项目不仅涉及到后端的权限设计,还涵盖了前端页面的展示,使得用户界面与...
1. **配置Shiro**:在后端服务器上,我们需要配置Shiro的Web环境,包括 Realm(域)的实现,用于从数据库或其他数据源加载用户、角色和权限信息。同时,设置Filter Chain,使Shiro能够拦截请求并执行权限校验。 2. ...
SSM-Shiro权限管理是Java Web开发中一种常见的权限控制框架集成方案,它结合了Spring、SpringMVC、MyBatis以及Apache Shiro这四个组件,实现了一个完整的权限管理系统。在本文中,我们将深入探讨如何将这四个组件...
在这个"shiro权限管理类项目框架"中,我们将深入探讨 Shiro 如何帮助我们实现权限控制。 Shiro 的核心组件包括: 1. **认证**:这是验证用户身份的过程。在 Shiro 中,我们可以创建一个 `Subject` 对象代表当前...
SpringBoot集成Shiro实现动态URI权限是一个常见的权限管理实践,主要目的是为了实现更灵活、更安全的用户访问控制。在Web应用中,权限控制通常包括角色管理、菜单管理、操作权限(URI)管理等,而动态URI权限则允许...
该链接指向的博文是关于如何在基于Spring框架的Web应用中进行Shiro权限配置的详细介绍。 标签中给出了“源码”和“工具”,表明文档中可能包含对Shiro框架源码的解读,以及如何将其作为工具在实际开发中使用。 ...
SSM+Shiro权限框架是Java Web开发中常用的一种安全控制解决方案,主要结合了Spring、Spring MVC、MyBatis和Apache Shiro四个组件。这个框架提供了全面的权限管理功能,包括用户认证、授权、会话管理和安全性日志等。...
1. **安装与配置**:介绍如何在项目中引入Shiro依赖,配置Shiro的核心组件,如SecurityManager。 2. **Shiro组件**:Shiro包含多个关键组件,如Subject(代表当前用户)、Realms(连接应用和安全数据源的桥梁)、...
角色则是由权限组成,Shiro的权限模型非常灵活,可以基于字符串表达式来匹配一个或多个操作。 Shiro的会话管理提供了完整的会话生命周期管理,包括会话的创建、销毁、失效、验证、休眠、激活等。Shiro支持对Web、...
2. **配置 Shiro**:创建一个 Spring 配置类,如 `ShiroConfig`,并定义 SecurityManager 和 Realm。SecurityManager 可以通过 `DefaultWebSecurityManager` 创建,并设置 Realm。Realm 的配置可以根据具体认证和...