1. 程式人生 > >【原】無腦操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf實現基礎認證許可權

【原】無腦操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf實現基礎認證許可權

 1 package cn.temptation.shiro;
 2 
 3 import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
 4 import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
 5 import org.springframework.beans.factory.annotation.Qualifier;
 6 import org.springframework.context.annotation.Bean;
 7 import org.springframework.context.annotation.Configuration;
8 9 import java.util.LinkedHashMap; 10 import java.util.Map; 11 12 /** 13 * Shiro配置類 14 */ 15 @Configuration 16 public class ShiroConfig { 17 // 1、建立ShiroFilterFactoryBean 18 @Bean 19 public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
20 ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); 21 // 設定安全管理器 22 shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager); 23 24 // 設定登入跳轉頁面 25 shiroFilterFactoryBean.setLoginUrl("/login"); 26 27 /** 28 * Shiro內建過濾器:實現許可權相關的攔截
29 * 常用過濾器: 30 * anon(認證用):無需認證(登入)即可訪問 31 * authc(認證用):必須認證才可訪問 32 * user(少用):使用rememberMe功能可以訪問 33 * perms(授權用):必須得到資源許可權才可訪問 34 * role(授權用):必須得到角色許可權才可訪問 35 */ 36 Map<String, String> filterMap = new LinkedHashMap<>(); 37 38 // 放行登入請求 39 filterMap.put("/doLogin", "anon"); 40 41 // 配置退出過濾器,退出程式碼Shiro已經實現 42 filterMap.put("/logout", "logout"); 43 44 // 過濾鏈定義,從上向下順序執行,一般將/*放在最下邊 45 filterMap.put("/*", "authc"); 46 47 shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); 48 49 return shiroFilterFactoryBean; 50 } 51 52 // 2、建立DefaultWebSecurityManager 53 @Bean(name = "securityManager") 54 public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("myRealm") MyRealm myRealm) { 55 DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); 56 57 // 關聯Realm 58 defaultWebSecurityManager.setRealm(myRealm); 59 60 return defaultWebSecurityManager; 61 } 62 63 // 3、建立Realm 64 @Bean(name = "myRealm") 65 public MyRealm getRealm() { 66 return new MyRealm(); 67 } 68 }