wisdomsell day5 登入與許可權基礎

2021-09-25 04:09:51 字數 2491 閱讀 7194

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 ...