|
@@ -0,0 +1,76 @@
|
|
|
+package com.zhentao.shiro.config;
|
|
|
+
|
|
|
+import com.zhentao.shiro.config.MyRealm;
|
|
|
+import org.apache.shiro.authc.Authenticator;
|
|
|
+import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
|
|
|
+import org.apache.shiro.authz.Authorizer;
|
|
|
+import org.apache.shiro.authz.ModularRealmAuthorizer;
|
|
|
+import org.apache.shiro.mgt.SecurityManager;
|
|
|
+import org.apache.shiro.session.mgt.SessionManager;
|
|
|
+import org.apache.shiro.session.mgt.eis.MemorySessionDAO;
|
|
|
+import org.apache.shiro.session.mgt.eis.SessionDAO;
|
|
|
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|
|
+import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition;
|
|
|
+import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
|
|
|
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
|
|
+import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+
|
|
|
+import java.util.Collections;
|
|
|
+
|
|
|
+@Configuration
|
|
|
+public class ShiroConfig {
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager mySecurityManager) {
|
|
|
+ ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
|
|
|
+ shiroFilterFactoryBean.setSecurityManager(mySecurityManager);
|
|
|
+
|
|
|
+ shiroFilterFactoryBean.setLoginUrl("/login");
|
|
|
+
|
|
|
+ shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized");
|
|
|
+ return shiroFilterFactoryBean;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public SecurityManager mySecurityManager(Authenticator authenticator, Authorizer authorizer, SessionManager sessionManager) {
|
|
|
+ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
|
+ securityManager.setAuthenticator(authenticator);
|
|
|
+ securityManager.setAuthorizer(authorizer);
|
|
|
+ securityManager.setSessionManager(sessionManager);
|
|
|
+ return securityManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ShiroFilterChainDefinition shiroFilterChainDefinition() {
|
|
|
+ DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
|
|
|
+
|
|
|
+ chainDefinition.addPathDefinition("/login", "anon");
|
|
|
+ chainDefinition.addPathDefinition("/unauthorized", "anon");
|
|
|
+ chainDefinition.addPathDefinition("/**", "authc");
|
|
|
+ return chainDefinition;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public Authenticator authenticator(MyRealm myRealm) {
|
|
|
+ ModularRealmAuthenticator authenticator = new ModularRealmAuthenticator();
|
|
|
+
|
|
|
+ authenticator.setRealms(Collections.singletonList(myRealm));
|
|
|
+ return authenticator;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public Authorizer authorizer() {
|
|
|
+ return new ModularRealmAuthorizer();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public SessionManager sessionManager() {
|
|
|
+ DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
|
|
|
+
|
|
|
+ SessionDAO sessionDAO = new MemorySessionDAO();
|
|
|
+ sessionManager.setSessionDAO(sessionDAO);
|
|
|
+ return sessionManager;
|
|
|
+ }
|
|
|
+}
|