public ShiroFilterFactoryBean shiroFilterFactoryBean (SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); shiroFilterFactoryBean.setLoginUrl("/login.html"); shiroFilterFactoryBean.setUnauthorizedUrl("/403"); Map<String, Filter> filtersMap = new LinkedHashMap<>(); shiroFilterFactoryBean.setFilters(filtersMap); Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>(); /** * 静态文件 */ filterChainDefinitionMap.put("/css/**","anon"); filterChainDefinitionMap.put("/lib/**","anon"); filterChainDefinitionMap.put("/images/**","anon"); filterChainDefinitionMap.put("/js/**","anon"); filterChainDefinitionMap.put("/file/**","anon"); /** * 登录注册 */ filterChainDefinitionMap.put("/login.html","anon"); filterChainDefinitionMap.put("/sys/logout","anon"); filterChainDefinitionMap.put("/sys/login","anon"); filterChainDefinitionMap.put("/sys/captcha","anon"); /** * 管理后台 */ filterChainDefinitionMap.put("/**", "user"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; }
时间: 2023-06-24 18:06:19 浏览: 95
这是一个使用Shiro框架实现的权限控制的配置代码。主要作用是配置Shiro的过滤器链,指定不同URL的访问权限。其中包括了静态文件的访问权限、登录注册页面的访问权限、管理后台的访问权限等等。
具体来说,ShiroFilterFactoryBean是Shiro框架中用于配置过滤器链的工厂类,通过设置该类的属性,可以定义不同URL的访问权限。在这段代码中,我们设置了登录页面、验证码接口、退出登录接口等URL为匿名访问,即不需要登录即可访问;同时将其他所有URL的访问权限设置为需要用户登录后才能访问。
需要注意的是,这里的用户登录状态是由Shiro框架负责维护。当用户访问需要登录权限的URL时,Shiro会自动检查用户是否已登录,并根据用户的登录状态决定是否允许访问。如果用户未登录,则会被重定向到登录页面。
相关问题
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); //自定义拦截器 Map<String, Filter> filtersMap = new LinkedHashMap<String, Filter>(); //访问权限配置 filtersMap.put("requestURL", getURLPathMatchingFilter()); shiroFilterFactoryBean.setFilters(filtersMap);
这段代码是一个 Java 项目中集成 Shiro 框架的配置代码,用于配置 Shiro 的过滤器链。具体来说,它创建了一个 `ShiroFilterFactoryBean` 对象,并设置了该对象的 `securityManager` 属性为一个 `SecurityManager` 对象(这里假设已经正确配置了安全管理器对象)。
接着,它自定义了一个拦截器链,即 `filtersMap`,并添加了一个名为 "requestURL" 的自定义拦截器,该拦截器是通过调用 `getURLPathMatchingFilter()` 方法获取的。这个自定义拦截器的作用是匹配当前请求的 URL 是否在权限控制的 URL 列表中,如果匹配成功则允许访问,否则拒绝访问。
最后,它将这个自定义拦截器链设置到 `ShiroFilterFactoryBean` 对象的 `filters` 属性中,然后返回该对象。
在 Shiro 中,过滤器链是指一系列的过滤器,用于对请求进行拦截和处理。在这个配置中,我们自定义了一个拦截器链,其中包含一个自定义的过滤器,用于匹配当前请求的 URL 是否在权限控制的 URL 列表中。这个过滤器链会在 Shiro 进行权限控制时被用到,用于拦截和处理请求。
ShiroFilterFactoryBean 的maven配置文件
如果您想在Maven项目中使用ShiroFilterFactoryBean,需要在Maven配置文件(pom.xml)中添加以下依赖项:
```
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.6.0</version>
</dependency>
```
此外,您还需要在Spring配置文件中配置ShiroFilterFactoryBean。例如,您可以在Spring配置文件中添加以下内容:
```
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login"/>
<property name="unauthorizedUrl" value="/403"/>
<property name="filterChainDefinitions">
<value>
/logout = logout
/** = authc
</value>
</property>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myRealm"/>
</bean>
<bean id="myRealm" class="com.example.MyRealm"/>
```
此配置将创建一个ShiroFilterFactoryBean实例,该实例将使用DefaultWebSecurityManager和MyRealm进行身份验证,并且所有URL都将要求用户进行身份验证。如果用户未经身份验证,他们将被重定向到/login页面。如果用户没有权限访问某个URL,他们将被重定向到/403页面。
阅读全文