shiro配置含有特定路径的接口放行
时间: 2024-08-14 21:04:39 浏览: 89
Apache Shiro 使用手册(五) Shiro 配置说明
在Shiro(Spring Security的一个分支,用于Web应用的权限管理)中,如果你想要允许特定路径的接口访问不受限制,可以利用`FilterChainDefinitionBuilder`或者直接在`shiro.ini`配置文件中进行设置。这里我将解释两种常见的方式:
1. **通过XML配置** (如果使用的是Spring Boot):
```xml
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!-- ... -->
<property name="filterChainDefinitions">
<value>
/api/* = anon
/api/login = logout
<!-- 允许访问/api/yourSpecificPath接口 -->
/api/yourSpecificPath = roles[USER] // 用户角色需要有访问该路径的权限
</value>
</property>
</bean>
```
2. **通过Java配置(Spring Security 5+)**:
```java
import org.apache.shiro.config.Ini;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
@Configuration
public class ShiroConfig {
@Value("${shiro.ini.path:/path/to/shiro.ini}")
private String iniPath;
@Bean(name = "shiroFilter")
public ShiroFilterFactoryBean shiroFilter() throws Exception {
Ini ini = new Ini();
// ...加载ini配置
FilterChainDefinition chainDef = FilterChainDefinitionBuilder
.newInstance()
.antMatchers("/api/**").permitAll() // 允许所有/api开头的路径
.antMatchers("/api/yourSpecificPath").hasRole("USER") // 针对特定路径,仅用户角色可以访问
.build();
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
factoryBean.setIni(ini);
factoryBean.setFilterChainDefinitionMap(chainDef);
return factoryBean;
}
}
```
在这个例子中,"/api/yourSpecificPath"会被匹配,并且只有具有"USER"角色的用户才能访问。
阅读全文