1.shiro安全框架
Apache Shiro 是一個強大易用的Java 安全框架,提供了認證、授權、加密和session會話管理等功能,對於任何一個應用程序,Shiro 都可以提供全面的安全管理服務。並且相對於其他安全框架spring security,Shiro 要簡單的多。
Shiro是apache旗下一個開源框架,它將軟體系統的安全認證相關的功能抽取出來,實現使用者身分認證,權限授權、加密、會話管理等功能,組成了一個通用的安全認證框架。
Shiro可以非常容易的開發出足夠好的應用,其不僅可以用在JavaSE環境,也可以用在JavaEE環境。 Shiro可以幫助我們完成:認證、授權、加密、會話管理、與Web整合、快取等。
1.1 什麼是權限管理
基本上涉及到使用者參與的系統都要進行權限管理,權限管理屬於系統安全的範疇,權限管理實現對使用者存取系統的控制,依照安全規則或安全性原則控制使用者可以存取且只能存取自己被授權的資源。
權限管理包含使用者身分認證和授權兩部分,簡稱認證授權。對於需要存取控制的資源使用者首先經過身分認證,認證透過後使用者俱有該資源的存取權限方可存取。
1.2 什麼是身分認證
身分認證,就是判斷一個使用者是否為合法使用者的處理過程。最常用的簡單身分認證方式是系統透過核對使用者輸入的使用者名稱和口令,看是否與系統中儲存的該使用者的使用者名稱和口令一致,來判斷使用者身分是否正確。對於採用指紋等系統,則出示指紋;硬體Key等刷卡系統,則需要刷卡。
1.3 什麼是授權
授權,即存取控制,控制誰能存取哪些資源。主體進行身份認證後需要分配權限方可存取系統的資源,對於某些資源沒有權限是無法存取的.
1.4 認證授權框架有哪些
shiro框架和spring security框架這款框架是現在市面比較流行。
2.使用shiro完成認證工作
2.1 shiro中認證的關鍵物件
Subject:主體存取系統的用戶,主體可以是用戶、程式等,進行認證的都稱為主體;
Principal:身份資訊----帳號是主體(subject)進行身份認證的標識,標識必須具有唯一性,如用戶名、手機號、郵箱地址等,一個主體可以有多個身份,但是必須有一個主身份(Primary Principal)。
credential:憑證資訊---密碼是只有主體自己知道的安全訊息,如密碼、憑證等。
2.2 認證流程
2.3 專案程式碼
1.先不用資料庫來進行身分認證,--我們ini文件,window系統文件,該文件中可以存放帳號和密碼。
(1) 建立一個maven java工程
2.3.1 依賴
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.9.0</version> </dependency>
2.3.2 建立ini檔案
2.3.3 測試程式碼
public class Test01 { public static void main(String[] args) { //1.获取SecurityManager对象 DefaultSecurityManager securityManager=new DefaultSecurityManager(); //2.读取ini文件 IniRealm iniRealm=new IniRealm("classpath:shiro.ini"); //3。设置securityManager的realm securityManager.setRealm(iniRealm); //4.设置securityManager上下文生效 SecurityUtils.setSecurityManager(securityManager); //5.获取subject的主体对象 Subject subject=SecurityUtils.getSubject(); try{ //UsernamePasswordToken作用是封装你输入的账号和密码 是客户自己输入的 用来进行比较与realm UsernamePasswordToken token=new UsernamePasswordToken("admin","123456"); //抛出异常 比对shiro中realm和自己的对比,如果一致则登录成功,不一致则登录失败 subject.login(token); System.out.println("登陆成功"); }catch(Exception e){ e.printStackTrace(); System.out.println("登陆失败"); } } }
2.4 認證的原則
Subject: 主題登入資訊提交給SecurityManager --->認證器Authenticator- --->根據你的realm提供的資料進行相關的認證。 realm---與資料來源互動的類別。
3.授權
#3.1 修改ini檔
public class Test01 { public static void main(String[] args) { //1.获取SecurityManager对象 DefaultSecurityManager securityManager=new DefaultSecurityManager(); //2.读取ini文件 IniRealm iniRealm=new IniRealm("classpath:shiro.ini"); //3。设置securityManager的realm securityManager.setRealm(iniRealm); //4.设置securityManager上下文生效 SecurityUtils.setSecurityManager(securityManager); //5.获取subject的主体对象 Subject subject=SecurityUtils.getSubject(); try{ //UsernamePasswordToken作用是封装你输入的账号和密码 是客户自己输入的 用来进行比较与realm UsernamePasswordToken token=new UsernamePasswordToken("admin","123456"); //抛出异常 比对shiro中realm和自己的对比,如果一致则登录成功,不一致则登录失败 subject.login(token); System.out.println("登陆成功"); }catch(Exception e){ e.printStackTrace(); System.out.println("登陆失败"); } System.out.println("=========================登陆后==========================="); boolean authenticated = subject.isAuthenticated(); if(authenticated){ //判断当前登录者是否具有user:query权限 boolean permitted = subject.isPermitted("user:update"); System.out.println(permitted); //从角色角度 boolean role1 = subject.hasRole("role1"); System.out.println(role1); }else { System.out.println("请先认证"); } } }
以上是Java shiro安全框架如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),