springboot 集成 shrio 步骤
时间: 2023-07-29 15:14:21 浏览: 46
在Spring Boot中集成Shiro可以按照以下步骤进行:
1. 添加Shiro依赖:在您的pom.xml文件中添加Shiro的依赖。
```xml
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>1.7.1</version>
</dependency>
```
2. 配置Shiro:在application.properties(或application.yml)文件中配置Shiro的相关属性。
```properties
# 配置Shiro的登录页面
shiro.loginUrl=/login
# 配置Shiro的登录成功跳转页面
shiro.successUrl=/index
# 配置Shiro的未授权跳转页面
shiro.unauthorizedUrl=/403
```
3. 创建Shiro的配置类:创建一个类并使用`@Configuration`注解标记,用于配置Shiro的相关设置和自定义Realm。
```java
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
filterFactoryBean.setSecurityManager(securityManager);
// 配置拦截器规则
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/static/**", "anon"); // 允许访问静态资源
filterChainDefinitionMap.put("/login", "anon"); // 允许匿名访问登录页面
filterChainDefinitionMap.put("/**", "authc"); // 需要认证才能访问其他页面
filterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
// 配置登录页面
filterFactoryBean.setLoginUrl("/login");
return filterFactoryBean;
}
@Bean
public DefaultWebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
return securityManager;
}
@Bean
public Realm realm() {
return new YourCustomRealm();
}
}
```
在上面的示例代码中,我们使用`ShiroFilterFactoryBean`配置了Shiro的拦截器规则,其中`anon`表示允许匿名访问,`authc`表示需要认证才能访问。我们还配置了登录页面和自定义的Realm。
4. 创建自定义Realm:创建一个类并实现`org.apache.shiro.realm.AuthenticatingRealm`接口,用于实现自定义的身份认证和授权逻辑。
```java
public class YourCustomRealm extends AuthenticatingRealm {
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// 实现身份认证逻辑
// ...
}
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
// 实现授权逻辑
// ...
}
}
```
在自定义Realm中,您需要实现`doGetAuthenticationInfo()`方法和`doGetAuthorizationInfo()`方法,分别用于身份认证和授权逻辑的实现。
5. 创建登录页面和其他页面:创建登录页面(例如login.html),以及其他需要授权才能访问的页面(例如index.html)。
以上是在Spring Boot中集成Shiro的基本步骤。您可以根据实际需求进行修改和扩展,例如添加记住我功能、自定义登录成功跳转页面等。希望对您有所帮助!如果还有其他问题,请随时提问。