Shiro 認證和授權流程實現

2021-09-22 19:41:35 字數 2896 閱讀 2252

新增shiro框架依賴

org.apache.shiro

shiro-spring

1.3.2

@configuration

@bean("securitymanager")

public defaultwebsecuritymanager newdefaultwebsecuritymanager()

@bean("shirofilte***ctory")

public shirofilte***ctorybean newshirofilte***ctorybean(

securitymanager securitymanager)

}

在註解啟動類中,重寫onstartup方法,完成過濾器的註冊

@override

public void onstartup(servletcontext servletcontext) throws servletexception

private void registerfilter(servletcontext servletcontext) }

indexcontroller

public string dologinui()

sysuser finduserbyusername(string username);

select *

from sys_users

where username=#

shirouserrealm

@service

public class shirouserrealm extends authorizingrealm

/*** 執行認證操作時,此方法使用者獲取使用者認證資訊

* 說明:此方法由認證管理器呼叫

*/@override

protected authenticationinfo dogetauthenticationinfo(

authenticationtoken token)

throws authenticationexception

/**執行授權操作時,此方法用於獲取使用者的許可權資訊*/

@override

protected authorizationinfo dogetauthorizationinfo(

principalcollection principals)

}

sysusercontroller

@responsebody

public jsonresult dologin(string username,string password)

/**

* shiro授權配置

* * 負責shiro中相關bean物件(**物件

* )的宣告週期管理

* @return

*/@bean("lifecyclebeanpostprocessor")

public lifecyclebeanpostprocessor newlifecyclebeanpostprocessor()

/*** 通過此物件底層建立**物件(需要進行授權訪問的service)

* @return

*/@dependson(value="lifecyclebeanpostprocessor")

@bean

public defaultadvisorautoproxycreator newdefaultadvisorautoproxycreator()

/*** 授權屬性設定(例如由誰進行授權操作等)

* @param securitymanager

* @return

*/@bean

public authorizationattributesourceadvisor newauthorizationattributesourceadvisor(

securitymanager securitymanager)

使用者授權,基於使用者id找角色id、基於角色id找選單id、基於選單id找許可權標識 //略

shirouserrealm

/**執行授權操作時,此方法用於獲取使用者的許可權資訊*/

@override

protected authorizationinfo

dogetauthorizationinfo(

principalcollection principals) ;

listmenuids=

sysrolemenudao.findmenuidsbyroleids(

roleids.toarray(array));

//4.基於選單id查詢許可權標識

listpermisssions=

sysmenudao.findpermissions(

menuids.toarray(array));

//5.封裝許可權資訊(authorizationinfo)

setpset=

new hashset();

for(string permission:permisssions)

}//去重和空(null),空串

system.out.println("pset="+pset);

******authorizationinfo info=

new ******authorizationinfo();

info.setstringpermissions(pset);

return info;

}}

在實現類相應的方法上面新增許可權相應的許可權標識

使用者會根據角色來獲得不同的許可權範圍

shiro 實現認證授權

一.認證和授權的概念 認證 authentication show it,you are you 授權 authoriziation through it,you can do sth 二.shiro中的認證與授權 authenticatingrealm shiro中的用於進行認證的領域,實現dog...

shiro認證授權

1.shiro配置類 1.1需要配置什麼?建立乙個shirofilte ctorybean物件,檢測認證 向bean中傳入securitymanager物件 沒有認證的時候應該訪問哪個url位址 setloginurl 哪些資源是可以被匿名訪問的 setfilterchaindefinitionma...

shiro認證授權過程

nclick formsubmit login.action self public string login throws exception subject.login token 當這一 執行時,就會自動跳入到authrealm中認證方法 protected authenticationinf...