springboot shiro 权限控制
时间: 2023-07-18 12:08:43 浏览: 110
Spring Boot集成Shiro进行权限控制的步骤如下:
1. 引入Shiro和Spring Boot相关依赖。
2. 配置Shiro相关的Bean,包括Realm、SecurityManager和Filter等。
3. 配置Shiro的拦截器,即设置需要拦截的URL和对应的权限。
4. 在Controller中使用注解进行权限控制。
以下是一个简单的示例:
1. 引入依赖,在pom.xml文件中添加以下内容:
```
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.1</version>
</dependency>
```
2. 配置Shiro相关的Bean,创建一个ShiroConfig类,并添加以下内容:
```
@Configuration
public class ShiroConfig {
@Bean
public Realm realm() {
// 创建自定义的Realm
return new MyRealm();
}
@Bean
public SecurityManager securityManager() {
// 创建SecurityManager,并设置Realm
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm());
return securityManager;
}
@Bean
public ShiroFilterFactoryBean shiroFilter() {
// 创建ShiroFilterFactoryBean,并设置SecurityManager和拦截器
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager());
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/logout", "logout");
filterChainDefinitionMap.put("/**", "authc");
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilter;
}
}
```
3. 配置Shiro的拦截器,创建一个WebMvcConfig类,并添加以下内容:
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private ShiroFilterFactoryBean shiroFilter;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加Shiro拦截器
registry.addInterceptor(new ShiroInterceptor()).addPathPatterns("/**");
}
@Bean
public HandlerInterceptor shiroInterceptor() {
// 创建ShiroInterceptor,并设置ShiroFilterFactoryBean
ShiroInterceptor shiroInterceptor = new ShiroInterceptor();
shiroInterceptor.setShiroFilter(shiroFilter);
return shiroInterceptor;
}
}
```
4. 在Controller中使用注解进行权限控制,例如:
```
@RestController
public class UserController {
@GetMapping("/user")
@RequiresPermissions("user:view")
public String viewUser() {
// 只有具有user:view权限的用户才能访问
return "View User";
}
}
```
以上是Spring Boot集成Shiro进行权限控制的基本步骤,具体实现还需要根据实际情况进行调整。
阅读全文