自定義Realm實現簡單認證 授權

2021-10-07 14:01:43 字數 2182 閱讀 5671

public

class

userrealm

extends

authorizingrealm

/** * 認證,該方法只在認證的時候執行一次

* @param authenticationtoken

* @return

* @throws authenticationexception

*/@override

protected authenticationinfo dogetauthenticationinfo

(authenticationtoken authenticationtoken)

throws authenticationexception

return null;

}/**

* 授權,注意-->該方法會在每次進行授權操作的時候都執行一次

* 不能每次都去資料庫查一次,解決方法有:

* 1、使用快取,然後用aop切進來,判斷是否有快取

* 2、在認證成功後將許可權傳遞過來

* @param principalcollection

* @return

*/@override

protected authorizationinfo dogetauthorizationinfo

(principalcollection principalcollection)

else

if(null != permissions && permissions.

size()

>0)

}return info;

}

public

class

testmyrealm

catch

(authenticationexception e)

// 授權判斷

boolean role1 = subject.

hasrole

("*:*");

system.out.

println

(name +

" 是否具有 *:* 角色:"

+role1)

;boolean permitted = subject.

ispermitted

("*:*");

system.out.

println

(name +

" 是否具有 *:* 許可權:"

+permitted);}

}

結果

// 學生實體類

public

class

stu// get...set...

}

// 角色、許可權、使用者物件

public

class

activestu

// get...set...

}

public

class

stuserviceimpl

implements

elseif(

"ls"

.equals

(name)

)return stu;

}}

public

class

roleserviceimpl

implements);

}elseif(

"ls"

.equals

(name)))

;}return null;

}}

public

class

permissionserviceimpl

implements);

}elseif(

"ls"

.equals

(name)))

;}return null;

}}

Shiro 自定義Realm實現認證

1.獲取當前的 subject.呼叫 securityutils.getsubject 2.測試當前的使用者是否已經被認證.即是否已經登入.呼叫 subject 的 isauthenticated 3.若沒有被認證,則把使用者名稱和密碼封裝為 usernamepasswordtoken 物件 1 建...

shiro自定義realm認證 五

上一節介紹了realm的作用 realm 需要根據token中的身份資訊去查詢資料庫 入門程式使用ini配置檔案 如果查到使用者返回認證資訊,如果查詢不到返回null。token就相當於是對使用者輸入的使用者名稱和密碼的乙個封裝。下面就是建立乙個使用者名稱密碼token 自定義realm。根據上面穿...

shiro之自定義realm

一 為當限前登入的使用者授予角色和權 protected authorizationinfo dogetauthorizationinfo principalcollection principals 這邊我一直沒找到什麼好的方法 就是在使用者登陸的時候,就要進行這一步的驗證,但是沒有實現,感覺有點...