前面的帖子簡單的介紹了基本的權限控制,可以說任何一個后台管理系統都是需要權限的
今天開始咱們來講講Shiro
首先引入基本的jar包
1 <!-- shiro --> 2 <dependency> 3 <groupId>org.apache.shiro</groupId> 4 <artifactId>shiro-core</artifactId> 5 </dependency> 6 <dependency> 7 <groupId>org.apache.shiro</groupId> 8 <artifactId>shiro-web</artifactId> 9 </dependency> 10 <dependency> 11 <groupId>org.apache.shiro</groupId> 12 <artifactId>shiro-spring</artifactId> 13 </dependency> 14 <dependency> 15 <groupId>org.apache.shiro</groupId> 16 <artifactId>shiro-ehcache</artifactId> 17 </dependency> 18 <dependency> 19 <groupId>org.apache.shiro</groupId> 20 <artifactId>shiro-quartz</artifactId> 21 </dependency>
項目工程結構:
創建shiro-demo.ini:
# user infomation configer: [name=pwd]
[users]
lee=123456
nee=654321
構建一個junit測試最基本的登錄登出
1 @Test 2 public void testLoginAndLogout() { 4 // 創建SecurityManager工廠,通過ini配置文件創建 SecurityManager工廠 5 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro-demo.ini"); 7 // 創建SecurityManager 8 SecurityManager securityManager = factory.getInstance(); 10 // 設置SecurityManager到運行環境中,保持單例模式 11 SecurityUtils.setSecurityManager(securityManager); 13 // 從SecurityUtils里邊創建一個subject 14 Subject subject = SecurityUtils.getSubject(); 16 // 在認證提交前准備token(令牌) 17 // 這里的賬號和密碼 將來是由用戶輸入進去 18 UsernamePasswordToken token = new UsernamePasswordToken("lee", "123456"); 20 try { 21 // 執行認證提交 22 subject.login(token); 23 } catch (AuthenticationException e) { 24 e.printStackTrace(); 25 } 27 // 是否認證通過 28 boolean isAuthenticated = subject.isAuthenticated(); 30 System.out.println("是否認證通過:" + isAuthenticated); 32 // 退出操作 33 subject.logout(); 35 // 是否認證通過 36 isAuthenticated = subject.isAuthenticated(); 38 System.out.println("是否認證通過:" + isAuthenticated); 39 }
運行后就可以測試用戶名密碼正確與否的情況是否能夠通過
用戶名不正確,密碼不正確,或者用戶名不存在都將以異常的信息拋出