标題ruoyi架構的權限做的特别好,但是如果我要開發一個免登入接口怎麼做呢?請看
隻需要在核心代碼裡邊找到ShiroConfig,然後修改以下
/**
* Shiro過濾器配置
*/
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager)
{
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// Shiro的核心安全接口,這個屬性是必須的
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 身份認證失敗,則跳轉到登入頁面的配置
shiroFilterFactoryBean.setLoginUrl(loginUrl);
// 權限認證失敗,則跳轉到指定頁面
shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);
// Shiro連接配接限制配置,即過濾鍊的定義
LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
// 對靜态資源設定匿名通路
filterChainDefinitionMap.put("/favicon.ico**", "anon");
filterChainDefinitionMap.put("/ruoyi.png**", "anon");
filterChainDefinitionMap.put("/html/**", "anon");
filterChainDefinitionMap.put("/css/**", "anon");
filterChainDefinitionMap.put("/docs/**", "anon");
filterChainDefinitionMap.put("/fonts/**", "anon");
filterChainDefinitionMap.put("/img/**", "anon");
filterChainDefinitionMap.put("/ajax/**", "anon");
filterChainDefinitionMap.put("/js/**", "anon");
filterChainDefinitionMap.put("/ruoyi/**", "anon");
filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
filterChainDefinitionMap.put("你需要放開的接口路徑", "anon");
// 退出 logout位址,shiro去清除session
filterChainDefinitionMap.put("/logout", "logout");
// 不需要攔截的通路
filterChainDefinitionMap.put("/login", "anon,captchaValidate");
// 注冊相關
filterChainDefinitionMap.put("/register", "anon,captchaValidate");
// 系統權限清單
// filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll());
Map<String, Filter> filters = new LinkedHashMap<String, Filter>();
filters.put("onlineSession", onlineSessionFilter());
filters.put("syncOnlineSession", syncOnlineSessionFilter());
filters.put("captchaValidate", captchaValidateFilter());
filters.put("kickout", kickoutSessionFilter());
// 登出成功,則跳轉到指定頁面
filters.put("logout", logoutFilter());
shiroFilterFactoryBean.setFilters(filters);
// 所有請求需要認證
filterChainDefinitionMap.put("/**", "user,kickout,onlineSession,syncOnlineSession");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}