更新時間:2021-07-29 17:07:17 來源:動力節點 瀏覽1152次
答:Shiro是Java的一個安全框架。使用Shiro可以非常容易的開發出足夠好的應用。其不僅可以用在JavaSE環境,也可以用在JavaEE環境。Shiro可以幫助我們完成功能:認證、授權、加密、會話管理、與Web集成、緩存等。
三個核心組件分別是Subject,SecurityManager和Realms。
答:(1)SecurityManager:典型的Facade,Shiro通過它對外提供安全管理的各種服務;(2)Authenticator:對“Who are you?”進行核實。通常涉及用戶名和密碼。這個組件負責收集principals和credentials,并將它們提交給應用系統。如果提交的credentials跟應用系統中提供的credentials吻合,就能夠繼續訪問,否則需要重新提交principals和credentials,或者直接終止訪問;(3)Authorizer:身份份驗證通過后,由這個組件對登錄人員進行訪問控制的篩查,比如“who can do what”,或者“who can do which actions”。Shiro采用“基于Realm”的方法,即用戶(又稱Subject)、用戶組、角色和permission的聚合體;(4)Session Manager:這個組件保證了異構客戶端的訪問,配置簡單。它是基于POJO/J2SE的,不跟任何的客戶端或者協議綁定
答:(1)Application Code:應用程序代碼,就是我們自己的編碼,如果在程序中需要進行權限控制,需要調用Subject的API;(2)Subject:主體代表了當前用戶。所有的Subject都綁定到Security Manager,與Subject的所有交互都會委托給Security Manager,可以將Subject當成一個門面,而真正執行者是Security Manager;(3)Security Manage:安全管理器,所有與安全有關的操作都會與Security Manager交互,并且它管理所有的Subject;(4)Realm:域shiro是從Realm來獲取安全數據(用戶,角色,權限)。就是說Security Manager。
要驗證用戶身份,那么它需要從Realm獲取相應的用戶進行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應的角色/權限進行驗證用戶是否能進行操作;可以把Realm看成DataSource,即安全數據源。
答:url級別權限控制;方法注解權限控制;代碼級別權限控制。
答:對資源類型的管理稱為粗顆粒度權限控制,即只控制到菜單、按鈕、方法。粗粒度的例子比如:用戶具有用戶管理的權限,具有導出訂單明細的權限。
對資源實例的控制稱為細顆粒度權限管理,即控制到數據級別的權限,比如:用戶只允許修改本部門的員工信息,用戶只允許導出自己創建的訂單明細。
答:對于粗顆粒度的授權可以很容易做系統架構級別的功能,即系統功能操作使用統一的粗顆粒度的權限管理。對于細顆粒度的授權不建議做成系統架構級別的功能,因為對數據級別的控制是系統的業務需求,隨著業務需求的變更業務功能變化的可能性很大,建議對數據級別的權限控制在業務層個性化開發,比如:用戶只允許修改自己創建的商品信息可以在service接口添加校驗實現,service接口需要傳入當前操作人的標識,與商品信息創建人標識對比,不一致則不允許修改商品信息。
粗顆粒權限:可以使用過慮器統一攔截url。
細顆粒權限:在service中控制,在程序級別來控制,個性化編程。
答:簡單的身份驗證,支持多種數據源;對角色的簡單授權,支持細粒度的授權;支持一級緩存,以提升應用程序的性能;內置基于POJO的企業會話管理,適用于web及非web環境;非常簡單的API加密;不跟任何框架綁定,可以獨立運行。
答:首先在web.xml中配置Shiro的Filter;其次在Spring的配置文件中配置Shiro:
>配置自定義Realm:實現自定義認證和授權
>配置Shiro實體類使用的緩存策略
>配置SecurityManager
>配置保證Shiro內部Bean聲明周期都得到執行的Lifecycle Bean后置處理器
>配置AOP式方法級權限檢查
>配置Shiro Filter
答:相比Spring Security,Shiro在保持強大功能的同時,使用簡單性和靈活性;Spring Security即使是一個一個簡單的請求,最少得經過它的8個Filter;
Spring Security必須在Spring的環境下使用。
(1)應用程序或框架代碼調用任何Subject的hasRole*,checkRole*,is Permitted*,或者check Permission*方法的變體,傳遞任何所需的權限;
(2)Subject的實例調用security Manager的對應的方法,Subject實例;
(3)Security Manager調用org.apache.shiro.authz.Authorizer接口的對應方法,默認情況下,authorizer實例是一個Modular Realm Authorizer實例,它支持協調任何授權操作過程中的一個或多個Realm實例;
(4)每個配置好的Realm被檢查是否實現了相同的Authorizer接口.如果是,Realm各自的hasRole*,checkRole*,isPermitted*,或checkPermission*方法將被調用。
以上就是動力節點小編介紹的"Shiro框架面試題",希望對大家有幫助,想了解更多可查看Shiro視頻教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習