許可權和選單的操作07

2021-09-25 07:14:40 字數 2837 閱讀 5282

以前登入成功,傳的是username,現在傳主體employee物件

//身份認證

@override

protected authenticationinfo dogetauthenticationinfo(authenticationtoken authenticationtoken) throws authenticationexception

session是從subject獲取

存在shiro的session中後,httpsession也會有值

public class usercontext     

//獲取到當前登入使用者

public static employee getuser()

}

儲存所有許可權過濾的資料都是從資料庫中獲取

@autowiredprivate 

ipermissionservice permissionservice;public

mapcreatefilterchaindefinitionmap());

filterchaindefinitionmap.put("/**", "authc");

return filterchaindefinitionmap;

}

授權部分的資料也是從資料庫中獲得的

應該拿到當前登入使用者的所有許可權

permissionrepository

jpql關聯原則: 1.不寫on 2.關聯物件的別名.屬性

//根據使用者拿到他對應的所有許可權

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

setfindpermsbyuser(long userid);

permissionservice(呼叫略...)

jparealm

拿到當前登入使用者,再獲取它的許可權

@override

protected authorizationinfo dogetauthorizationinfo(principalcollection principalcollection)

shiro處理沒有許可權是跳轉頁面,而我們如果是ajax請求,我們希望是返回json資料 ajax請求會有乙個請求頭:x-requested-with: xmlhttprequest 需要自定義乙個shiro的許可權過濾器

public class aisellpermissionsauthorizationfilter extends permissionsauthorizationfilter  else 

resp.getwriter().print("");

}else else }}

return false;

}}

配置許可權過濾器

entry key=「aisellperms」:確定許可權過濾器的名稱

...

@autowiredprivate

ipermissionservice permissionservice;

public mapcreatefilterchaindefinitionmap());

...}

員工 -> 角色 -> 許可權 -> 選單

選單domain的自關連配置

需要配置雙向,但是不能讓jpa去管理一對多(我們自己管理:@transient)

雙向生成json會產生死迴圈,需要一邊進行忽略:@jsonignore

//讓它不再生成json

@manytoone(fetch = fetchtype.lazy)

@joincolumn(name = "parent_id")

@jsonignore

private menu parent;

// 臨時屬性 -> 這個欄位jpa就不管它了

@transient

private listchildren = new arraylist<>();

//easyui的樹需要乙個text屬性

public string gettext()

public inte***ce menurepository extends baserepository
根據設計只能通過員工找到子選單

需要通過子選單拿到父選單

判斷這個父選單是否已經存到集合中

如果這個菜單單沒有存起來,放到集合中 把當前這個子選單放到父選單中去

@overridepublic list

findloginmenu()

為這個父選單新增對應的子選單

parent.getchildren().add(child);

}return parentmenus;

}

@autowired

private imenuservice menuservice;

public listloginusermenu()

$('#menutree').tree({

url:'/util/loginusermenu',

...shiro:haspermission

沒有這個許可權,就不展示對應的按鍵

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

...刪除

選單的許可權

三層系統的選單的許可權問題 所謂選單,可以是c 做的選單,也可以是幾個js做的。下面是用js做的選單許可權 js的麵包屑導航 1.顯示層 1 準備三張 d1 1.jpg,d1 2.jpg,d1 3.jpg 用途 已登入顯示一張 未登入顯示一張 滑鼠懸停顯示一張。有許可權的選單 超連結 無許可權的選單...

選單的許可權

三層系統的選單的許可權問題 所謂選單,可以是c 做的選單,也可以是幾個js做的。下面是用js做的選單許可權 js的麵包屑導航 1.顯示層 1 準備三張 d1 1.jpg,d1 2.jpg,d1 3.jpg 用途 已登入顯示一張 未登入顯示一張 滑鼠懸停顯示一張。有許可權的選單 超連結 無許可權的選單...

許可權選單的設計

1.資源表 1.1 resource resourceid,resourcenamespace,description 1.2 category categoryid,name,parentid,description 1.3 module moduleid,name,url,description...