設定登陸許可權 根據許可權設定選單

2021-09-29 01:39:00 字數 3867 閱讀 7953

shiro處理許可權流程:

​ (1)把所有的許可權交給shiro管理–createfilterchaindefinitionmap 可以體現處理

​ (2)在realm裡面 就要查詢當前使用者的許可權,如果這個許可權在shiro管理返回之內,這個使用者就有響應的許可權

否則就沒有

// 從資料庫啊查詢到所有的許可權 交給shiro管理

list

all = ipermissionservice.

findall()

;for

(permission permission : all)

配置自定義許可權過濾器

自定義許可權過濾必須有使用自定義的許可權過濾器必須有工廠bena的支援才能使用

"shirofilter"

class

="org.apache.shiro.spring.web.shirofilte***ctorybean"

>

name

="securitymanager"

ref="securitymanager"

>

property

>

name

="loginurl"

value

="/login"

>

property

>

name

="successurl"

value

="/main"

>

property

>

name

="unauthorizedurl"

value

="/s/unauthorized.jsp"

>

property

>

name

="filters"

>

>

key=

"aisellperms"

value-ref

="aisellpermsfilter"

>

entry

>

map>

property

>

name

="filterchaindefinitionmap"

ref="filterchaindefinitionmap1"

>

property

>

bean

>

"aisellpermsfilter"

class

="cn.itsource.aisell.shiro.aisellfilterchaindefinitionmapbuilder"

>

bean

>

"filterchaindefinitionmap1"

factory-bean

="filtermapfactoybean"

factory-method

="createfilterchaindefinitionmap"

>

bean

>

"filtermapfactoybean"

class

="cn.itsource.aisell.shiro.aisellfilterchaindefinitionmap"

>

bean

>

--sql語句查詢當前使用者的許可權

select p.

*from employee e

join employee_role er on e.id = er.employee_id

join role r on er.role_id = r.id

join role_permission rp on rp.role_id = r.id

join permission p on p.id = rp.permission_id

where e.id =

2

@query("select p.sn from employee e join e.roles er join er.permissions p where e.id = ?1 ")

public setfindpermissionsbyloginuser(long id);

當你前台登入後就會將登陸物件傳到後台來驗證 驗證結束後進入如此方法授權

protected authorizationinfo dogetauthorizationinfo

(principalcollection principalcollection)

1.3 許可權出問題之後,ajax怎麼返回
為什麼會出現這個問題 shiro底層不會處理你ajax請求 所以你傳送ajax

請求若是許可權不夠則 會彈出框 undefined (該提示並不能滿足我們的需求)

解決方式:

(1)寫乙個過濾器 覆寫permissionsauthorizationfilter

(2)重寫 onaccessdenied方法

方法裡面 就判斷如果是ajax請求 就直接返回json格式,

​ 否則就走原來的格式,返回頁面

public

class

aisellfilterchaindefinitionmapbuilder

extends

permissionsauthorizationfilter

else")

;}else

else}}

return

false;}

}

name

="filters"

>

>

key=

"aisellperms"

value-ref

="aisellpermsfilter"

>

entry

>

map>

"aisellpermsfilter"

class

="cn.itsource.aisell.shiro.aisellfilterchaindefinitionmapbuilder"

>

bean

>

配置完畢後 還需要再傳送請求的時候找到自定義過濾器: 參見map裡面的配置

1.4 頁面許可權的按鈕控制

新增標籤來控制頁面的按鈕是否顯示 shiro會通過這個標籤自己判斷是否有許可權

//  引入標籤庫支援

<%@ taglib prefix="shiro" uri="" %>

刪除

需求:動態獲取選單根據使用者許可權顯示選單

2.1 menu物件的確定

public

class

menu

extends

basedomain

//setget...

}

2.2 service構造json的方法
public list

findmenubyloginuser

(long employeeid)

//通過父選單查詢出子選單 放到物件裡面去

parentmenu.

getchildren()

.add

(submenu)

;//[1,[2,3,4,5],6 [7,8]]

}return menus;

}

登陸許可權設定 根據許可權設定選單

shiro處理許可權流程 1 把所有的許可權交給shiro管理 createfilterchaindefinitionmap 可以體現處理 2 在realm裡面 就要查詢當前使用者的許可權,如果這個許可權在shiro管理返回之內,這個使用者就有響應的許可權 否則就沒有 從資料庫啊查詢到所有的許可權 ...

mysql 許可權設定 mysql 許可權設定

關於mysql的使用者管理,筆記 1 建立新使用者 通過root使用者登入之後建立 grant all privileges on to testuser localhost identified by 123456 建立新使用者,使用者名為testuser,密碼為123456 grant all ...

CVS許可權設定

關於許可權管理的操作,我感覺不錯的 假設有使用者1 lxw 使用者2 zxh 有使用者1的模組 lxwdir 使用者2的模組 zxhdir 要求 lxw 只能訪問lxwdir zxh只能訪問zxhdir 第1步,設定cvs的庫配置檔案 模組cvsroot 的訪問許可權 方法 建立超級使用者的工作目錄...