1.shiro的認識
許可權框架(提供的易用的api,功能強大)
1.1 和spring security區別
1.2 shiro的四大基石
身份驗證、授權、密碼學和會話管理securitymanager:核心物件 realm:獲取資料介面
2.shiro的核心api
2.1 操作之前,先得到securitymanager物件
//一.建立我們自己的realm
myrealm myrealm = new myrealm();
//二.搞乙個核心物件:
defaultsecuritymanager securitymanager = new defaultsecuritymanager();
securitymanager.setrealm(myrealm);
//三.把securitymanager放到上下文中
securityutils.setsecuritymanager(securitymanager);
2.2 我們使用過的方法
//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(「許可權名」)
3.密碼加密功能
繼承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);
5.整合spring
去找:shiro-root-1.4.0-rc2\samples\spring
5.1 導包
org.apache.shiro shiro-all 1.4.0 pom
org.apache.shiro shiro-spring 1.4.0 5.2 web.xml
是從案例中拷備過來,進行了相應的修改
<?xml version="1.0" encoding="utf-8"?>
5.4 獲取map過濾
注意,返回的map必需是有序的(linkedhashmap)
public class filterchaindefinitionmapfactory
PHP ThinkPhp5 實現token登陸
1 首先在資料庫的 users 表中新增兩個字段 1 token 2 time out token 用於儲存使用者的 token time out 用於設定使用者 token 的過期時間 首先建立函式 checktoekn token 函式用於檢驗 token 是否存在,並且更新 token pub...
Springboot個人部落格系統 5 後台登入
首先,實現後台登入需要對前端接收的表單資料進行校驗,需要訪問資料庫,所以需要乙個userservice進行資料校驗,呼叫userrepository訪問資料庫,實現如下 userservice service public class userserviceimpl implements users...
HTML5 PHP MySQL搭建超簡單的登入系統
一 mysql部分 二 html5部分 三 php部分 製作不易,如果對您有幫助請點贊收藏,謝謝!開發環境 php 7.3.1 mysql 5.7.24 apache 2.4.37 1.建立資料庫mydbcreate database ifnot exists mydb character set ...