shiro入門

1.shiro簡介

  Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、受權、密碼和會話管理。使用Shiro的易於理解的API,您能夠快速、輕鬆地得到任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。數據庫

2.主要功能

三個核心組件:Subject, SecurityManager 和 Realms.
Subject:即「當前操做用戶」。可是,在Shiro中,Subject這一律念並不單單指人,也能夠是第三方進程、後臺賬戶(Daemon Account)或其餘相似事物。它僅僅意味着「當前跟軟件交互的東西」。但考慮到大多數目的和用途,你能夠把它認爲是Shiro的「用戶」概念。
  Subject表明了當前用戶的安全操做,SecurityManager則管理全部用戶的安全操做。
  SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro經過SecurityManager來管理內部組件實例,並經過它來提供安全管理的各類服務。
  Realm: Realm充當了Shiro與應用安全數據間的「橋樑」或者「鏈接器」。也就是說,當對用戶執行認證(登陸)和受權(訪問控制)驗證時,Shiro會從應用配置的Realm中查找用戶及其權限信息。
  從這個意義上講,Realm實質上是一個安全相關的DAO:它封裝了數據源的鏈接細節,並在須要時將相關數據提供給Shiro。當配置Shiro時,你必須至少指定一個Realm,用於認證和(或)受權。配置多個Realm是能夠的,可是至少須要一個。
  Shiro內置了能夠鏈接大量安全數據源(又名目錄)的Realm,如LDAP、關係數據庫(JDBC)、相似INI的文本配置資源以及屬性文件等。若是缺省的Realm不能知足需求,你還能夠插入表明自定義數據源的本身的Realm實現。
  

3.Shiro入門Helloword

      步驟:apache

  3.1.構建基本maven項目安全

  

  3.2.添加必要的maven依賴網絡

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.wfd360.shiro-demo</groupId>
 8     <artifactId>shiro-demo</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <dependencies>
11         <dependency>
12             <groupId>org.apache.shiro</groupId>
13             <artifactId>shiro-core</artifactId>
14             <version>1.3.2</version>
15         </dependency>
16 
17     </dependencies>
18 
19 </project>
View Code

  3.3.添加帳號信息(模擬數據庫帳號)框架

   

  3.4.helloWord程序maven

 1 package com.wfd360.shiro;
 2 
 3 import org.apache.shiro.SecurityUtils;
 4 import org.apache.shiro.authc.AuthenticationException;
 5 import org.apache.shiro.authc.UsernamePasswordToken;
 6 import org.apache.shiro.config.IniSecurityManagerFactory;
 7 import org.apache.shiro.mgt.SecurityManager;
 8 import org.apache.shiro.subject.Subject;
 9 import org.apache.shiro.util.Factory;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12 
13 
14 /**
15  * address: www.wfd360.com
16  */
17 public class HelloShiro {
18     private static Logger logger = LoggerFactory.getLogger(HelloShiro.class);
19 
20     public static void main(String[] args) {
21         //IniSecurityManagerFactory方法在1.4.0中被註解標誌爲不建議使用
22         // 讀取配置文件,初始化SecurityManager工廠
23         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
24         //獲取securityManager 實例
25         SecurityManager securityManager = factory.getInstance();
26         //把securityManager實例綁定到SecurityUtils
27         SecurityUtils.setSecurityManager(securityManager);
28         //獲得當前執行的用戶
29         Subject subject = SecurityUtils.getSubject();
30         //認證明體,當前進來的用戶
31         // 建立token令牌,用戶名/密碼
32         UsernamePasswordToken token = new UsernamePasswordToken("jack", "12345");
33         //身份認證
34         try {
35             subject.login(token);
36             logger.info("登陸成功!");
37         } catch (AuthenticationException e) { //login的接口函數
38             //void login(AuthenticationToken var1) throws AuthenticationException;因此直接抓AuthenticationException異常便可 /
39             // 身份認證失敗即拋出此異常
40             logger.info("登陸失敗!");
41             e.printStackTrace();
42         }
43         //登出
44         subject.logout();
45     }
46 }
View Code

 

  3.5運行main方法測試。ide

相關文章
相關標籤/搜索