Shiro認證 初學(二)

2021-09-03 07:39:15 字數 2487 閱讀 5445

1:前後端分離:更改以前的ajax請求,由於目前的專案基本上都是前後端分離的,所以我們所有的資料都已json格式返回給前端,對沒有登入的請求進行攔截,覆蓋掉shiro原本的跳轉到login.jsp頁面,繼承formauthenticationfilter

public class ajaxpermissionsauthorizationfilter extends formauthenticationfilter  catch (exception e)  finally 

}return false;

}@bean

public filterregistrationbean registration(ajaxpermissionsauthorizationfilter filter)

}

2:自定義realm,重寫兩個介面方法,dogetauthenticationinfo(登入)和dogetauthorizationinfo(授權)

登入:拿資料匹配,查詢資料庫通過,建立******authenticationinfo物件傳入使用者名稱和密碼,呼叫securityutils.getsubject().getsession.setattribute()存session

授權:呼叫securityutils.getsubject.getsession()獲取session,從session中獲取到使用者的許可權,構建******authorizationinfo物件,授權方法addstringpermissions()方法進行授權

public class userrealm extends authorizingrealm 

/*** 登入

* @param authenticationtoken

* @return

* @throws authenticationexception

*/@override

protected authenticationinfo dogetauthenticationinfo(authenticationtoken authenticationtoken) throws authenticationexception

//使用者存在

******authenticationinfo authenticationinfo=new ******authenticationinfo(

user.getstring("username"),

user.getstring("password"),

getname());

user.remove("password");

//將使用者資訊放入session中

securityutils.getsubject().getsession().setattribute(constants.session_user_info,user);

return authenticationinfo;

}}

shiro配置類:自定義shiro的過濾器鏈 map結構

anon:他對應過濾器鏈裡面是空的,不用做什麼操作

authc:必須授權認證後的介面才可以訪問,他是shiro內建的乙個***formauthenfilter

@configuration

public class shiroconfiguration

//第一步

/*** 不指定名字的話,自動建立乙個方法名第乙個字母小寫的bean

*/@bean

public securitymanager securitymanager()

/*** shiro realm 繼承自authorizingrealm的自定義realm,即指定shiro驗證使用者登入的類為自定義的

*/@bean

public userrealm userrealm()

/*** 第四部:憑證匹配器

*/@bean(name = "credentialsmatcher")

public hashedcredentialsmatcher hashedcredentialsmatcher()

/*** 第三步,管理shiro的生命週期

*/@bean

public lifecyclebeanpostprocessor lifecyclebeanpostprocessor()

/**第二步:開啟shiro註解(如@requiresroles,@requiresperssions,

* 借助springaop掃瞄使用shiro註解的類

*/@bean

@dependson()

public defaultadvisorautoproxycreator advisorautoproxycreator()

@bean

public authorizationattributesourceadvisor authorizationattributesourceadvisor()

}

Shiro許可權管理(二) 認證

時隔這麼久終於有時間更新了,今天和大家分享一下shiro的原理。我認為無論是shiro也好,還是其他安全框架也好,其功能主要就分為三部分 認證 授權 加密。下面我們來詳細說明shiro具體是如何實現的。講原理當然離不開結構圖,我們先來看一下shiro的整體結構。由shiro的結構圖我們可以看出shi...

shiro學習 二 入門認證

使用 test 完成最基本簡單的認證流程。1 建立 securitymanager 2 主體 subject 提交請求 3 securitymanager 認證 4 authenticator 認證 5 realm 驗證 org.apache.shiro shiro core 1.6.0 junit...

Shiro許可權認證

shiro的授權以及許可權 關係圖 我們需要在service層中先寫好方法 public inte ce shirouserservice然後imp繼承 service shirouserservice public class shirouserserviceimpl implements shi...