2.shiro的核心api
3.密碼加密功能
4.自定義realm
5.整合spring
許可權框架(提供的易用的api,功能強大)框架
shiro
spring security
易用性√x粒度
粗細(強大)
身份驗證、授權、密碼學和會話管理securitymanager:核心物件 realm:獲取資料介面
//一.建立我們自己的realm
myrealm myrealm = new myrealm();
//二.搞乙個核心物件:
defaultsecuritymanager securitymanager = new defaultsecuritymanager();
securitymanager.setrealm(myrealm);
//三.把securitymanager放到上下文中
securityutils.setsecuritymanager(securitymanager);
//1.拿到當前使用者
subject currentuser = securityutils.getsubject();
//2.判斷是否登入
currentuser.isauthenticated();
//3.登入(需要令牌的)
/** unknownaccountexception:使用者名稱不存在
incorrectcredential***ception:密碼錯誤
authenticationexception:其它錯誤
*/ usernamepasswordtoken token = new usernamepasswordtoken("admin", "123456");
currentuser.login(token);
//4.判斷是否是這個角色/許可權
currentuser.hasrole("角色名")
currentuser.ispermitted("許可權名")
/**
* string algorithmname, object source, object salt, int ha****erations)
* 第乙個引數algorithmname:加密演算法名稱
* 第二個引數source:加密原密碼
* 第三個引數salt:鹽值
* 第四個引數ha****erations:加密次數
*/******hash hash = new ******hash("md5","123456","itsource",10);
system.out.println(hash.tohex());
繼承authorizingrealm實現兩個方法:dogetauthorizationinfo(授權) /dogetauthenticationinfo(登入認證)
//身份認證
@override
protected authenticationinfo dogetauthenticationinfo(authenticationtoken authenticationtoken) throws authenticationexception
//返回認證資訊
//準備鹽值
bytesource salt = bytesource.util.bytes("itsource");
//密碼是shiro自己進行判斷
******authenticationinfo authenticationinfo = new ******authenticationinfo(username,password,salt,getname());
return authenticationinfo;
}
//授權
@override
protected authorizationinfo dogetauthorizationinfo(principalcollection principalcollection)
注意:如果我們的密碼加密,應該怎麼判斷(匹配器)
//一.建立我們自己的realm
myrealm myrealm = new myrealm();
//建立乙個憑證匹配器(無法設定鹽值)
hashedcredentialsmatcher matcher = new hashedcredentialsmatcher();
// 使用md5的方式比較密碼
matcher.sethashalgorithmname("md5");
// 設定編碼的迭代次數
matcher.setha****erations(10);
//設定憑證匹配器(加密方式匹配)
myrealm.setcredentialsmatcher(matcher);
去找:shiro-root-1.4.0-rc2\samples\spring
org.apache.shiro
shiro-all
1.4.0
pom
org.apache.shiro
shiro-spring
1.4.0
這個過濾器是乙個**(只關注它的名稱)
shirofilter
org.springframework.web.filter.delegatingfilterproxy
targetfilterlifecycle
true
/*
是從案例中拷備過來,進行了相應的修改
<?xml version="1.0" encoding="utf-8"?>
5.4 獲取map過濾
注意,返回的map必需是有序的(linkedhashmap)
public class filterchaindefinitionmapfactory
}
基於WIFI和android的智慧型手機開門設計
一 概述 android 安卓 是一種以linux為基礎的開源 作業系統,用於各種移動便攜裝置。其優點是擴充套件性強,應用程式豐富,現已發展到5.0版本。android的市場份額已躍居全球第一,為此基於安卓平台的各種應用也在迅速發展著。基於wifi和android的智慧型手機開門系統採用wifi轉串...
基於ZigBee的智慧型農業監測系統
3s 技術 zigbee 無線模組通訊技術及專家智慧型與知識,實現農業視覺化遠端診斷 遠端控制 災變預警等智慧型管理。它主要通過各種無線感測器實時地對農業生產現場的溫濕度 光照 co2濃度等引數進行 zigbee資料採集 1系統總體設計 基於zigbee無線模組 感測網路的智慧型農業監測系統總體結構...
基於C語言的小型超市庫存與銷售管理系統
1 需求分析 1.1 登陸 管理員和售貨員可通過各自的賬號 密碼分別進入管理員和售貨員的子系統。對於輸入不在系統所儲存的賬號或輸入的賬號密碼不匹配時,要求使用者重新輸入。1.2 使用者管理 管理員使用者可瀏覽系統內所有的使用者的賬號 密碼 許可權類別,可新增使用者,可刪除使用者。1.3 庫存管理 管...