當前位置:首頁 » 網頁前端 » 前端項目怎麼做許可權
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端項目怎麼做許可權

發布時間: 2022-06-12 17:21:21

㈠ shiro前端多角色的許可權怎麼寫

一兩句話說不清楚,我推薦一套完整已經實現了你說的功能的項目給你。

Shiro介紹文檔:http://www.sojson.com/shiro
Demo已經部署到線上,地址是http://shiro.itboy.net,
管理員帳號:admin,密碼:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。

㈡ 前段如何在項目里重新載入許可權列表

login(登錄,所有人均可見)→登錄成功,獲取許可權→許可權不同,側邊欄的數據展示不同
先定義一份公共的路由表,裡面僅有一些公共的路由,如login,404
獲取到許可權後,我們根據許可權,得到需要動態添加的路由表,把這份路由表動態添加到router中即可。
前端許可權架構的設計一直都是備受關注的技術點.通過給項目引入了許可權控制方案,可以滿足我們靈活的調整用戶訪問相關頁面的許可.
比如哪些頁面向遊客開放,哪些頁面必須要登錄後才能訪問,哪些頁面只能被某些角色訪問(比如超級管理員).有些頁面即使用戶登錄了但受到角色的限制,他也只被允許看到頁面的部分內容.
出於實際工作的需要,很多項目(尤其類後台管理系統)需要引入許可權控制.倘若許可權整體的架構設計的不好或者沒有設計,會導致項目中各種許可權代碼混入業務代碼造成結構混亂,其次想給新模塊引入許可權控制或者功能擴展都十分棘手.
雖然前端在許可權層面能做一些事情,但很遺憾真正對許可權進行把關的是後端.例如一個軟體系統,前端在不寫一行許可權代碼的情況下,當用戶進入某個他無權訪問的頁面時,後端是可以判斷他越權訪問並拒絕返回數據的.由此可見前端即使不做什麼整個系統也是可以正常運行的,但這樣應用的體驗很不好.另外一個很重要的原因就是前端做的許可權校驗都是可以被本地數據造假越權通過.
前端如果能判斷某用戶越權訪問頁面時,就不要讓他進入那張頁面後再彈出無權訪問的信息提示,因為這樣體驗很差.最優方案是直接關閉那些頁面的入口,只讓他看到他能訪問的頁面.即使他通過輸入路徑惡意訪問,導航最後只會將它帶到默認頁面或404頁面.
前端做的許可權控制大抵是先接受後台發送的許可權數據,然後將數據注入到應用中.整個應用於是開始對頁面的展現內容以及導航邏輯進行控制,從而達到許可權控制的目的.前端做的許可權控制雖然能提供一層防護,但根本目的還是為了優化體驗.

㈢ 前端如何控制用戶許可權

1. UI處理(根據用戶擁有的許可權,判斷頁面上的一些內容是否顯示)

2. 路由處理(當用戶訪問一個它沒有許可權訪問的url時,跳轉到一個錯誤提示的頁面)

3. HTTP請求處理(當我們發送一個數據請求,如果返回的status是401或者401,則通常重定向到一個錯誤提示的頁面)

如何實現?

首先需要在Angular啟動之前就獲取到當前用戶的所有的permissions,然後比較優雅的方式是通過一個service存放這個映射關系.對於UI處理一個頁面上的內容是否根據許可權進行顯示,我們應該通過一個directive來實現.當處理完這些,我們還需要在添加一個路由時額外為其添加一個"permission"屬性,並為其賦值表明擁有哪些許可權的角色可以跳轉這個URL,然後通過Angular監聽routeChangeStart事件來進行當前用戶是否擁有此URL訪問許可權的校驗.最後還需要一個HTTP攔截器監控當一個請求返回的status是401或者403時,跳轉頁面到一個錯誤提示頁面.

大致上的工作就是這些,看起來有些多,其實一個個來還是挺好處理的.

在Angular運行之前獲取到permission的映射關系

Angular項目通過ng-app啟動,但是一些情況下我們是希望Angular項目的啟動在我們的控制之中.比如現在這種情況下,我就希望能獲取到當前登錄用戶的所有permission映射關系後,再啟動Angular的App.幸運的是Angular本身提供了這種方式,也就是angular.bootstrap().看的仔細的人可能會注意到,這里使用的是$.get(),沒有錯用的是jQuery而不是Angular的$resource或者$http,因為在這個時候Angular還沒有啟動,它的function我們還無法使用.

進一步使用上面的代碼可以將獲取到的映射關系放入一個service作為全局變數來使用.

在取得當前用戶的許可權集合後,我們將這個集合存檔到對應的一個service中,然後又做了2件事:

(1) 將permissions存放到factory變數中,使之一直處於內存中,實現全局變數的作用,但卻沒有污染命名空間.

(2) 通過$broadcast廣播事件,當許可權發生變更的時候.

如何確定UI組件的依據許可權進行顯隱

這里我們需要自己編寫一個directive,它會依據許可權關系來進行顯示或者隱藏元素.

這里看到了比較理想的情況是通關一個has-permission屬性校驗permission的name,如果當前用戶有則顯示,沒有則隱藏.

擴展一下之前的factory:

路由上的依許可權訪問

這一部分的實現的思路是這樣: 當我們定義一個路由的時候增加一個permission的屬性,屬性的值就是有哪些許可權才能訪問當前url.然後通過routeChangeStart事件一直監聽url變化.每次變化url的時候,去校驗當前要跳轉的url是否符合條件,然後決定是跳轉成功還是跳轉到錯誤的提示頁面.

router.js:

mainController.js 或者 indexController.js (總之是父層Controller)

這里依然用到了之前寫的hasPermission,這些東西都是高度可復用的.這樣就搞定了,在每次view的route跳轉前,在父容器的Controller中判斷一些它到底有沒有跳轉的許可權即可.

HTTP請求處理

這個應該相對來說好處理一點,思想的思路也很簡單.因為Angular應用推薦的是RESTful風格的介面,所以對於HTTP協議的使用很清晰.對於請求返回的status code如果是401或者403則表示沒有許可權,就跳轉到對應的錯誤提示頁面即可.

當然我們不可能每個請求都去手動校驗轉發一次,所以肯定需要一個總的filter.代碼如下:

寫到這里我們就基本實現了在這種前後端分離模式下,前端部分的許可權管理和控制。

㈣ 請教XX管理系統的前端頁面展示和後端許可權控制的一般解決方案

前端面向的是用戶編程,就是用戶可以看得到摸得到的。UI就是其中的一部分。後端是面向服務(伺服器)編程,用戶是無須知道裡面的操作的。舉個例子。比如簡單的登陸功能。前端的只要做好兩個文本控制項與一個按鈕控制項,並且監聽按鈕的點擊事件,將兩個文本的參數按照協議發送到伺服器端上。這就是前端要做的。而後端,伺服器就要接收發送過來的消息並且調用資料庫驗證用戶名與密碼。成功後返回結果。

㈤ html 怎麼在前端實現角色許可權控制

html在前端實現角色許可權控制操作:

1、框架提供了按鈕許可權的擴展服務,我們可以通過簡單的擴展來注冊我們自己的許可權項,我們通過繼承AbstractMenuPriv來實現我們的按鈕許可權類;

㈥ java如何做許可權管理

首先介紹下思路:

1、用戶表 user;

2、角色表 role;

3、菜單 menu;

4、角色菜單許可權表 role_menu;

5、用戶菜單許可權表 user_menu;

如圖:


如果角色沒有修改,是不用重新分配許可權的,所有userRole 重置為 null,如果角色修改則刪除原許可權,重新進行分配;

3、最後要優化的就是根據用戶查詢許可權的時候啦,我最開始是這樣做的,查詢角色許可權,用戶許可權,返回到前端,前端進行處理;結果就是很卡 基本上要三到四秒,

解決方案,一步到位;一個查詢返回全部數據。

如下SQL:

SELECT menu.MenuId id, ParentId pid, MenuName text,
(SELECT COUNT(1) FROM sys_user_menu WHERE UserId = #{userId} AND MenuId = sm.MenuId) isShow,
(SELECT CONCAT(
(CASE WHEN smenu.InsPower = 1 THEN 1 ELSE 0 END), ',',
(CASE WHEN smenu.DelPower = 1 THEN 1 ELSE 0 END), ',',
(CASE WHEN smenu.UpdPower = 1 THEN 1 ELSE 0 END), ',',
(CASE WHEN smenu.ViewPower = 1 THEN 1 ELSE 0 END))
FROM sys_user_menu smenu WHERE smenu.UserId = #{userId}
AND smenu.MenuId = sm.MenuId) MenuInfo
FROM sys_role_menu sm INNER JOIN sys_menu menu on sm.MenuId = menu.MenuId
WHERE RoelId = #{roleId}

首先根據 角色ID查詢出許可權,然後子查詢用戶是否有該許可權,有返回1 木用返回 0;

最後按鈕許可權 我是直接拼接成字元串,分別對應 添加、刪除、修改、查看 1 有該按鈕 0 沒有該按鈕;

優化後 不管是添加、修改用戶,載入用戶許可權都能控制在 1~2 秒;

㈦ javaweb 項目的系統許可權管理,怎麼設計

按你說的設計可以啊,設置角色,給用戶分配角色,角色控制菜單顯示,最好做一個後台可以編輯角色,那樣方便很多

㈧ 如何給項目裡面每個功能點設許可權

導讀: 一個用戶登錄系統之後,可以訪問哪些站點,那些菜單,那些模塊,那些頁面,那些按鈕,都是可以通過許可權進行控制的。 一個許可權做的比較完整的項目,一般人員管理,消息管理,菜單管理,站點管理,日誌管理,部件管理,許可權管理等等都是受許可權控制的,這么多模塊每個功能點是如何在許可權管理下跑的井井有條呢?最近老是看到很多人在發愁許可權,所以把自己的一些見解寫出來,供大家參考,也只是自己的一點點思路,不足的地方,謝謝指出。 問題:剛開始做模塊的時候,模塊寫好了,被測試提過來「你的日誌模塊功能點不受許可權控制」,當時就很模糊,什麼是許可權呀,去問測試人員,她打開一個頁面,上面有棵功能樹(很大,顯示各個模塊,以及模塊下面的操作),你的所有的功能點都沒在功能點樹上顯示,只有顯示在樹上的才可以把功能點分配給人,自己查去吧。回來看了下別人的代碼,呵呵原來一個模塊開發完之後需要給當前模塊所有功能點注冊許可權。帶著測試出的這個BUG,跟大家一起分享下一些知識點,以及許可權的核心思想吧。1.什麼是許可權?「許可權就是有票你就進」 去游樂園,去乘大巴,去坐地鐵,必須的買票吧?許可權就像你手裡的那張票。 「許可權就是認證不認人」 權是"權力,制度",限是「限制,管理」,連起來就是:XXXX通過權力,制度去管理XXX,在現在中國有1N多個人口,政府也給每個人發了證「身份證」,抗日時期小日本通過「良民證」去管理「中國人民」,看來受管理的都有一個特點就是「他有證」。 2.你要給誰設許可權----誰就是我們所說的功能點 我們要清楚的明白,我們要給系統里的用戶角色站點日誌等等模塊設許可權,讓有許可權的人去管理自己許可權下面的操作。 「你要用誰要去控制誰,你的功能點的粒度有多大」 第一個誰一般是用戶;第二個誰很可能是一個模塊(日誌模塊),一個表對象,一個表裡面的一條記錄,甚至是一個頁面的一個方法,甚至是一個安牛,你所謂的 功能點可以是上面的所有東西,但是你一定要明白誰要控制是誰?一般可以細化到一個模塊,一個頁面,頁面的一個「刪除」,「添加」按鈕。 3.怎樣去控制?怎樣去唯一標識這個「控制項」,「方法」,「類」(也就是我說的功能點)"給每個'按鈕'一個身份證" 既然許可權是「許可權就是認證不認人」,那麼當然的給沒個功能點加一個唯一標識了。 唯一標識一般的方法是「模塊名稱+控制項的ID」。 天呀,這不是要殺了我嗎?這么多,沒辦法,嘻嘻,你必須這么干 4.許可權管理模塊一直在干什麼樣的工作【核心】1.)當一個用戶進系統之後,可以拿到這個用戶所有有可以控制功能點的信息 比如可以拿到有許可權的站點,有許可權的菜單,有許可權的模塊,有許可權的頁面等等。2.)拿到系統裡面所有的功能點,然後把它分配給希望分配的角色或者用戶 許可權管理模塊必須可以拿到系統裡面你配置的所有的功能點(最好以一棵功能樹的形式展現出來),並且可以把許可權分配給一些人員,角色,有許可權的用戶可以把自己的許可權分配給別人,許可權大的用戶可以控制所有信息3.)當開發人員開發一個新的模塊的時候,只要做簡單的操作就可以把新的功能點注冊到許可權裡面 許可權模塊必須提供一個可擴展的功能,當系統裡面多一個模塊的時候,可以讓開發人員迅速的注冊功能點(一般是XML格式)。

㈨ 後台管理系統 許可權分配前端怎麼分配

1、最簡單的就是登陸控制了。
2、然後是簡單的許可權控制到功能(頁面),這時候你需要知道數據表怎麼設計,
SQL怎麼查詢,代碼如何判斷。
3、再往上就開始考慮角色的設計。
4、考慮功能細節的控制(新增、更新、刪除、...)
5、考慮Scalability、Performance、User-Friendly....

㈩ 許可權管理如何實現

點擊設置,打開更多,然後點擊許可權管理