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