Shiro授權詳細解析

2021-08-06 03:10:09 字數 1580 閱讀 1879

shiro授權

shiro支援三種方式的授權:

1.程式設計式:通過編寫if/else授權**塊的方式完成(不推薦)

2.註解式:通過在controller方法上面註解完成(用的較多)

3.jsp標籤:在頁面上面完成(可以隱藏無許可權的東西)

shiro授權過程:

1. 授權需要繼承 authorizingrealm 類, 並實現其 dogetauthorizationinfo 方法

2. authorizingrealm 類繼承自 authenticatingrealm, 但沒有實現 authenticatingrealm 中的

dogetauthenticationinfo, 所以認證和授權只需要繼承 authorizingrealm 就可以了. 同時實現他的兩個抽象方法.

shiro許可權註解:

@requiresauthentication:表示當前的subject已經通過login進行了身份驗證,即subject.isauthenticated()返回true

@requiresuser:表示當前subject已經通過身份驗證或者通過記住我登入的

@requiresguest:表示遊客身份

@requiresroles(value="admin","user",logical=logical.and):表示當前subject需要admin和user兩個角色

@requirespermissions(value="user:a","user:b",logical=logical.or):表示當前subject需要許可權a或者b

可以通過例項工廠的方式注入許可權資源,實現資料庫配置

shiro會話

【重點】

controller裡面的httpsession一般情況下我們不允許其他層能訪問到

但是有了shiro,shiro支援在任何地方獲得session,這是乙個很重要的應用

shiro會話驗證

shiro提供會話驗證排程器

sessiondao

實現對session的增刪改查(放入資料庫)

create table sessions(

id varchar(200);

session varchar(2000);

constraint pk_sessions primary key(id);

)charset=utf8 engine=innodb

繼承enterprisecachesessiondao

protected serializable docreate(session session)

protected session doreadsession(serializable sessionid)

protected void doupdate(session session) {}

protected void dodelete(session session) {}

寫和讀session時候需要對session進行序列化和反序列化操作(因為存入資料庫的session是個物件,而不是字段)

做法:利用物件輸入輸出流進行讀寫,而物件輸入輸出流需要包裝位元組輸入輸出流

Shiro入門(六)Shiro授權

本章講解shiro授權的相關知識 1.概念 authorization 授權,也就是授予使用者訪問某些資源的許可權。前提在於需要使用者通過登入驗證才可以進行授權。許可權 permit 表示某些功能,如按鈕的顯示,選單的訪問,資料的crud 角色 role 許可權的集合,比如管理員角色,其擁有訪問系統...

shiro下篇授權

先寫個例子看一下 1 在realm中進行授權 1.2使用者請求的這個方法必須要有 quanxian 這個授權,才可以訪問。這裡給予當前登陸使用者 quanxian 這個訪問許可權。加上之後可以測試一下。2 使用shiro的方法註解方式許可權控制 第一步 在spring配置檔案中開啟shiro註解支援...

shiro認證授權

1.shiro配置類 1.1需要配置什麼?建立乙個shirofilte ctorybean物件,檢測認證 向bean中傳入securitymanager物件 沒有認證的時候應該訪問哪個url位址 setloginurl 哪些資源是可以被匿名訪問的 setfilterchaindefinitionma...