簡述shrio認證驗證demo

2021-10-05 09:53:40 字數 2777 閱讀 8624

我們都知道shrio是apache官方的一款許可權框架 具有認證 許可權設定等功能!!今天普及乙個小demo 梳理一下shrio的簡單使用

我們的demo是基於ssm框架的 所以我們需要配置spring

前面掃瞄包。。。。。。。。什麼的省略

說一下執行流程

web.xml配置 攔截 攔截shirofilter 查詢配置檔案 分配那些需要攔截的請求 配置檔案中 shirofilter 注入的有我們寫的realm 進入我們自己寫的類中 判斷登入使用者名稱 及許可權

下面是web.xml 的配置

shirofilter

org.springframework.web.filter.delegatingfilterproxy

/*首先我們配置資料來源 

掃瞄dao層

然後就是事務配置 這裡就不顯示了 但要記住一點 配置的時候的時候 需要配合aop使用

然後我們在spring配置檔案中引入shrio配置檔案

首先我們需要注入shrio工廠

/user/login = anon

/user/readname = authc, perms[/readname]

/user/readdata = authc, perms[/readdata]

/user/* = authc

這是攔截的配置 

當頁面請求的時候 會檢視配置檔案是否有攔截 如果有 攔截 則跳轉到攔截後需要跳轉的頁面 如果沒有 則由springmvc攔截

//主體,當前狀態為沒有認證的狀態「未認證」

subject subject = securityutils.getsubject();

// 登入後存放進shiro token

usernamepasswordtoken token=new usernamepasswordtoken(username,password);

user user;

//登入方法(認證是否通過)

//使用subject呼叫securitymanager,安全管理器呼叫realm

try catch (unknownaccountexception e)

return "test";}

然後我們需要重寫ream類

myshiroreaml extends authorizingrealm 重寫裡面的方法
這裡我們注入我們myshiroreaml類 同樣在shrio配置檔案中

然後把自定義realm注入到安全管理器中 

上面我們一直把securitymanager注入到shirofilter

authenticationinfo 認證

usernamepasswordtoken token=new usernamepasswordtoken(username,password); 這句話很重要 很重要 很重要

重要的事情說三遍 這句話是把前端使用者輸入的資料交給shrio 用於以後的密碼 及其他的比對

dogetauthenticationinfo(authenticationtoken authenticationtoken) 方法
authenticationtoken 裡面封裝的有 上面傳過來的token(username,password)

這裡可以直接拿過來跟資料庫裡面的資料做對比

首先我們查詢出來資料庫裡面的user*(使用者)

system.out.println("進來驗證了");

//驗證賬號密碼

usernamepasswordtoken token = (usernamepasswordtoken) authenticationtoken;

system.out.println("1:"+token.getusername());

user user = shiroservice.getuserbyusername(token.getusername());

system.out.println("2");

if(user==null)

//最後的比對需要交給安全管理器

//三個引數進行初步的簡單認證資訊物件的包裝 這是驗證使用者名稱密碼的

authenticationinfo infos = new ******authenticationinfo(user, user.getpassword(), this.getclass().get******name());

return infos;

authorizationinfo 授權 和
user user=(user)pc.getprimaryprincipal();

******authorizationinfo info = new ******authorizationinfo();

//獲取permission

if(user!=null)

return info;

}

shrio認證功能例項

shrio認證功能例項 一 書寫登入方法 public void checkuser catch exception ex 二 書寫自定義realm package cn.itcast.erp.realm import cn.itcast.erp.biz.iempbiz import cn.itca...

摘要認證和簽名認證簡述

整理下演算法的使用場景。為什麼需要認證 應對場景 摘要認證原理 摘要認證實現 簽名認證原理 簽名認證實現 為什麼需要認證 場景 經由http協議進行通訊的資料大都是未經加密的明文,包括引數 返回值 cookie head資料,外界通過對通訊的監聽,可以輕而易舉的根據請求和響應的格式,偽造請求和響應。...

簡述 HTTPS 證書認證

在我們不論是對伺服器還是客戶端進行 https 進行配置時,首先需要準備好的肯定是相關證書檔案了,而證書檔案是什麼又從 可以獲取到相關證書,並且它們又是什麼關係,最後它們怎麼在通訊中起作用呢?可能很多人都不是很系統的清楚這一塊 趁現在有空整理出來給大家入門了解下。為了獲取證書前,我們需要生成自己的一...