let permissions = [
? ? {
? ? ? ? role: 0,// 普通商家用戶
? ? ? ? urls: [
? ? ? ? ? ? /\/category.*/,
? ? ? ? ? ? /\/product.*/,
? ? ? ? ? ? /\/order.*/
? ? ? ? ]
? ? }, {
? ? ? ? role: 100,// 管理員
? ? ? ? urls: [
? ? ? ? ? ? /.*/
? ? ? ? ]
? ? }
];
// 權(quán)限的校驗(yàn)
module.exports = (request, response, next) => {
? ? // 獲取當(dāng)前用戶要請(qǐng)求的Url地址
? ? let reqUrl = request.url;
? ? // 獲取用戶
? ? let user = request.user;
? ? // 對(duì)登錄狀態(tài)的用戶進(jìn)行權(quán)限的校驗(yàn)
? ? if (user) {
? ? ? ? // 標(biāo)志位,標(biāo)記用戶是否能夠訪問對(duì)應(yīng)的地址,默認(rèn)值是不允許訪問
? ? ? ? let isGo = false;
? ? ? ? // 循環(huán)權(quán)限的數(shù)組
? ? ? ? outer:for (let i = 0; i < permissions.length; i++) {
? ? ? ? ? ? let permission = permissions[i];
? ? ? ? ? ? // 如果當(dāng)前用戶的角色 = 當(dāng)前權(quán)限的角色
? ? ? ? ? ? if (user.role === permission.role) {
? ? ? ? ? ? ? ? // 遍歷當(dāng)前權(quán)限能夠訪問的URL地址
? ? ? ? ? ? ? ? let urls = permission.urls;
? ? ? ? ? ? ? ? for (let j = 0; j < urls.length; j++) {
? ? ? ? ? ? ? ? ? ? let url = urls[j];
? ? ? ? ? ? ? ? ? ? // 比對(duì)當(dāng)前遍歷到的正則表達(dá)式是否匹配,當(dāng)前用戶要訪問的url地址
? ? ? ? ? ? ? ? ? ? if (url.test(reqUrl)) {
? ? ? ? ? ? ? ? ? ? ? ? // 如果匹配成功,修改標(biāo)志位,說明用戶可以訪問,此時(shí)可以跳出循環(huán)
? ? ? ? ? ? ? ? ? ? ? ? isGo = true;
? ? ? ? ? ? ? ? ? ? ? ? break outer;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? // 整個(gè)循環(huán)結(jié)束以后,如果發(fā)現(xiàn)用戶沒有權(quán)限訪問對(duì)應(yīng)的url地址,就拋出異常
? ? ? ? if (!isGo) {
? ? ? ? ? ? throw Error("您沒有權(quán)限訪問對(duì)應(yīng)的地址");
? ? ? ? }
? ? }
? ? // 放行的代碼
? ? next();
}
電商項(xiàng)目中的用戶權(quán)限中間件宴凉,借鑒思想普舆!
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門钞螟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兔甘,“玉大人,你說我怎么就攤上這事鳞滨《幢海” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵拯啦,是天一觀的道長(zhǎng)澡匪。 經(jīng)常有香客問我,道長(zhǎng)褒链,這世上最難降的妖魔是什么唁情? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮碱蒙,結(jié)果婚禮上荠瘪,老公的妹妹穿的比我還像新娘。我一直安慰自己赛惩,他們只是感情好哀墓,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喷兼,像睡著了一般篮绰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上季惯,一...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了伍掀?” 一聲冷哼從身側(cè)響起掰茶,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜜笤,沒想到半個(gè)月后濒蒋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡把兔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年沪伙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垛贤。...
- 正文 年R本政府宣布善绎,位于F島的核電站黔漂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏禀酱。R本人自食惡果不足惜炬守,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剂跟。 院中可真熱鬧减途,春花似錦、人聲如沸曹洽。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)送淆。三九已至税产,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間偷崩,已是汗流浹背辟拷。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谒出,于是被迫代替她去往敵國(guó)和親羽杰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渡紫,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- wyun_guest需要添加的地方 1: oauth_clients需要添加一條記錄image.png INSER...
- 經(jīng)過對(duì)django的初步學(xué)習(xí),我們已經(jīng)對(duì)后臺(tái)的基本流程以及django的運(yùn)作有了一定的了解考赛,但是這還不足夠,dja...
- 效果圖 這一章節(jié)完成后的效果如下: 1.普通用戶 2.管理者 Github鏈接 https://github.co...
- 前言(借鑒老師筆記) RBAC(Role-Based Access Control,基于角色的訪問控制)就是用戶通...
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理捣卤,服務(wù)發(fā)現(xiàn)忍抽,斷路器,智...