自定義元件之crm的許可權

2022-08-20 15:45:07 字數 3477 閱讀 9384

我們的元件已經寫完了,但是當我們的其他專案要用到這個元件的時候,就需要把這個元件整個拿過去,所以我們應該把templates和stark放在一起。

直接將templates拖到stark元件下。

這樣做也是可以的,不會報錯,是因為settings中的templates的配置。

然後我們來了解一下什麼是許可權,當我們用url訪問許可權的時候,就可以把url當成是許可權,只要有這個url就有許可權。

rbac  (role based access control)。

我們另起乙個專案叫做crm,在則各專案中,我們要用到自己寫的元件。我們直接拷貝過來stark元件。

from django.db import

models

#create your models here.

class

user(models.model):

user=models.charfield(max_length=32)

pwd=models.charfield(max_length=32)

roles=models.manytomanyfield("

role")

def__str__

(self):

return

self.user

class

role(models.model):

title=models.charfield(max_length=32)

permissions=models.manytomanyfield("

permission")

def__str__

(self):

return

self.title

class

permission(models.model):

url=models.charfield(max_length=128)

title = models.charfield(max_length=32)

code=models.charfield(max_length=32,default="

list")

def__str__

(self):

return self.title

然後執行資料庫遷移的兩條命令。配好url後,url(r'^stark/', sites.site.urls),  就能夠訪問stark了。

from django.db import

models

#create your models here.

class

school(models.model):

title = models.charfield(max_length=128)

def__str__

(self):

return

self.title

class

order(models.model):

title = models.charfield(max_length=32)

num = models.integerfield(max_length=32)

def__str__

(self):

return self.title

這時候就涉及到許可權問題了。因為有些角色不是擁有所有的功能,這時候就需要我們寫許可權了。

我們先把使用者訪問的url新增到rbac中,錄入許可權

但是我們在錄入編輯和刪除許可權url的時候應該使用正則來匹配,因為當使用者 擁有 訪問  編輯學校的許可權,而在寫許可權的時候不能把學校的id寫死。

這樣許可權就簡單的寫完了,然後給rbac新增角色。

這時候角色和對應的許可權都新增好了。

然後新增user使用者

接下來就是使用者登入後獲取使用者登入人的許可權了。

這樣使用者登入之後,就可以進入stark元件訪問了,但是這不是我們想要的,因為現在可以訪問所有的許可權,

接下來就是做一些使用者的控制許可權了。那這個怎麼做呢?我們可以在使用者訪問的時候進行判斷一下,如果這個使用者的角色有這個url,就說明有許可權訪問。否則就沒有許可權訪問。

那我們就想一想,這些**應該寫在哪?是不是每次使用者登入之後就應該session中有沒有許可權的url,所以我們應該把他放在中介軟體中。

在rbac建乙個package,在裡面建乙個py檔案,用來寫我們的中介軟體。

記住要在setting中 middleware 加上咱們的中介軟體  'rbac.service.rbac_middle.permissionmiddleware',

但這時候會報乙個錯誤,

這是為什麼呢?因為我們沒有登陸,所以當我們訪問許可權的時候會先走中介軟體,走到中介軟體就會重定向/login/,這又是一次請求,又會走中介軟體,這樣一直迴圈。

所以我們在中介軟體中設定乙個白名單:

判斷當前的路徑是否在白名單內,如果在就放行,如果不在就重定向到login頁面。 這樣使用者登入的認證就做好了

接下來就是許可權認證了

之前我們不是把登陸人的許可權url存在session中了嗎?

這樣似乎就寫完了。但是,但我們訪問編輯和刪除的許可權的時候卻不能訪問了,

我們應該用正則:

還有乙個小問題,就是但我們訪問admin的時候,如果沒有登陸admin會自動跳轉到/admin/login/?next=/admin/但是,這時候走中介軟體就會被攔截下來,所以:

這時候訪問admin就能夠看到了。

這樣許可權訪問就可以了。

接下來就是許可權選單的顯示。就是在左側顯示乙個當前登陸人的許可權選單

在頁面中渲染:

vue之自定義元件

在vue專案中怎麼自定義元件呢?在網上都到的都是引用vue.js這種的,原生的vue自定義元件方式如下 1 元件假如為a.vue,和引用它的b.vue在同一級的資料夾下 2 在b.vue中寫入的script內部寫入 import star a from a.vue export default 然後...

spring security之自定義許可權不足頁面

前幾天想著差不多也該學一套安全框架了,技術菜歸菜,但好歹也得完善一下自己的知識體系不是?於是,在網上找了一套shiro教程,結果看了前幾章之後已經覺得整個人都不好了。講解基本應用的部分倒是學得還算順利,一到涉及到一些原始碼 重寫某個方法 自定義某某某的時候,尤其是當作者羅列出一排陌生的類名時,我簡直...

自定義元件

myedittext 清除輸入的資料 setcompunddrawable 設定edittext ontouchevent ondraw 作用 繪製view顯示的內容,由系統自動呼叫 常用類 paint,canvas invalidate,postinvalidate 貪吃蛇原理 改變集合中的資料,...