摘要:配置配置核心控制器過濾器配置同時在中配置匿名的不需要權限需要認證通過即登錄成功需要名稱為的權限需要名稱為的角色說明匹配的的是匹配的是多個比如
maven配置
spring配置org.apache.shiro shiro-web ${shiro-version} org.apache.shiro shiro-spring ${shiro-version} ... org.apache.shiro shiro-ehcache ${shiro-version} 1.2.4
web.xml/logout.do = anon /image/*.do = authc /blog/**.do = authc,perms[blog] /admin/*.do = authc,roles[admin]
shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true shiroFilter *.do sitemesh org.sitemesh.config.ConfigurableSiteMeshFilter sitemesh *.do springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:app-servlet.xml 1 springmvc *.do
Realm類PS : shiro filter,放在mvc的filter/servlet前面,如果有sitemesh,放在sitemesh前面
/** * 登錄和檢查授權的時候調用當前類 */ @Component("DefaultRealm") public class DefaultRealm extends AuthorizingRealm { @Resource private AdminDao adminDao; public DefaultRealm() { setName("DefaultRealm");// This name must match the name in the User } //獲取授權信息, 用于驗證權限 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { String username = (String) principalCollection.getPrimaryPrincipal(); AdminUser admin = adminDao.getUniqueByProperty("username", username); SetMVC登錄驗證roleSet = admin.getRoles(); if (roleSet != null) { //獲取角色權限 Set roles = new HashSet<>(); Set stringPermissions = new HashSet<>(); for (Role role : roleSet) { roles.add(role.getRoleName()); //封裝到驗證信息 Set permissions = role.getPermissions(); for (Permission permission : permissions) { stringPermissions.add(permission.getPermissionName()); } } SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); authorizationInfo.setRoles(roles); authorizationInfo.setStringPermissions(stringPermissions); return authorizationInfo; } return null; } //獲取驗證信息,用于登錄驗證用戶名密碼 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken principals) throws AuthenticationException { String username = (String) principals.getPrincipal(); if (StringUtils.isNotEmpty(username)) { AdminUser admin = adminDao.getUniqueByProperty("username", username); SimpleAccount account = new SimpleAccount(username, admin.getPassword(), getName()); return account; } return null; } }
//在MVC的Controller中, 接收參數username和password, 裝配成UsernamePasswordToken對象, //然后用subject對象login方法進行登錄. UsernamePasswordToken token = new UsernamePasswordToken(username, password); Subject subject = SecurityUtils.getSubject(); subject.login(token);User-Role-Permission實體類
@Entity public class User { private String username; private String password=""; //省略getter setter private Setroles; @ManyToMany(targetEntity=Role.class) public Set getRoles() { return roles; } public void setRoles(Set roles) { this.roles = roles; } } @Entity public class Role{ private String roleName; //省略getter setter private Set permissions = new HashSet<>(); @ManyToMany public Set getPermissions() { return permissions; } public void setPermissions(Set permissions) { this.permissions = permissions; } } @Entity public class Permission { private String permissionName;//省略getter setter }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65348.html
摘要:項目介紹在之前的整合項目之后,更加完善功能,之前的代碼不予展示與介紹,想了解的請參考整合項目項目代碼獲取功能新增用戶注冊登錄錯誤次數限制使用作緩存注解配置引入數據校驗使用統一異常處理配置項目結構代碼控制層,以下展示注冊和登錄功能會跳到我們自 shiro項目介紹 在之前的shiro整合項目之后,更加完善shiro功能,之前的代碼不予展示與介紹,想了解的請參考shiro整合項目項目代碼獲取...
摘要:項目介紹在之前的整合項目之后,新增日志簡單集成,之前的代碼不予展示與介紹,想了解的請參考整合項目項目代碼獲取項目結構代碼控制層,,主要包含登錄及幾個頁面跳轉會跳到我們自定義的中登錄用戶名或密碼錯誤業務處理層,包含一個包,以接口類型存在 spring-springmvc-mybatis-shiro項目介紹 在之前的mybatis整合項目之后,新增日志、簡單集成shiro,之前的代碼不予展...
摘要:第一階段基礎階段基礎程序員重點把搞熟練核心是安裝配置基本操作目標能夠完成基本的系統安裝,簡單配置維護能夠做基本的簡單系統的開發能夠在中型系統中支持某個功能模塊的開發。本項不做重點學習,除非對前端有興趣。 第一階段:基礎階段(基礎PHP程序員) 重點:把LNMP搞熟練(核心是安裝配置基本操作) 目標:能夠完成基本的LNMP系統安裝,簡單配置維護;能夠做基本的簡單系統的PHP開發;能夠在P...
摘要:但是基本數據類型不是對象,不具備對象的特性不攜帶屬性沒有方法可調用。自動裝箱即直接賦值將會比使用構造方法的方式節省一塊堆內存空間,并自動入對象池。而手動裝箱使用構造方法會產生兩塊堆內存,而且不會保存在對象池中。 概念 java在設計之初,有一個基本原則:一切皆對象。但是基本數據類型不是對象,不具備對象的特性——不攜帶屬性、沒有方法可調用。為了解決此類問題,Java為每種基本數據類型分別...
閱讀 2706·2021-11-11 16:54
閱讀 2329·2021-10-09 09:44
閱讀 2548·2019-08-30 15:54
閱讀 1936·2019-08-30 11:24
閱讀 1175·2019-08-29 17:03
閱讀 2107·2019-08-29 16:22
閱讀 2086·2019-08-29 13:11
閱讀 1044·2019-08-29 12:14