12-shiro整合springboot环境搭建(整合shiro)
(1)导入依赖
<!--shiro整合springboot的依赖-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>1.5.3</version>
</dependency>
(2)编写shiro的配置类
package com.study.springboot_jsp_shiro.config;
import com.study.springboot_jsp_shiro.shiro.realms.CustomerRealm;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 用来整合shiro框架相关的配置类
*/
@Configuration
public class ShiroConfig {
//1、创建shiroFilter //负责拦截所有请求
//shiroFilter要使用安全管理器,我们可以使用参数的方式,就会自动到工厂中找我们已经创建好的安全管理器
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager defaultWebSecurityManager){
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
//给filter设置安全管理器
shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
return shiroFilterFactoryBean;
}
//2、创建安全管理器,我们这里不可以再创建SecurityManager了,因为SecurityManager没有web容器的特性
//SecurityManager要使用realm,我们可以使用参数的方式,就会自动到工厂中找我们已经创建好的realm
@Bean
public DefaultWebSecurityManager getDefaultWebSecurityManager(Realm realm){
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
//给安全管理器设置realm
defaultWebSecurityManager.setRealm(realm);
return defaultWebSecurityManager;
}
//3、创建自定义的realm
@Bean
public Realm getRealm(){
CustomerRealm customerRealm = new CustomerRealm();
return customerRealm;
}
}
(3)编写我们自定义的realm
package com.study.springboot_jsp_shiro.shiro.realms;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
/**
* 自定义realm
*/
public class CustomerRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
return null;
}
}
(4)编写我们的登录页面和主页


由于我们还没有配置受限资源和公共资源,所以以上两个页面可以随便访问。
(5)配置受限资源和公共资源

(6)再次访问index.jsp时,会发现自动跳转到我们的登录页面
因为shiro的默认认证页面路径是我们的login.jsp(可看出shiro和jsp的集成还是相对友好的)
可以通过下面方法修改shiro的默认认证页面路径


浙公网安备 33010602011771号