若在閱讀本片文章遇到許可權操作問題,請查看本系列的前兩章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html 現在步入正題,這篇文章是關於自有許可權管理系統設計的思路描述,自 ...
若在閱讀本片文章遇到許可權操作問題,請查看本系列的前兩章!
http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html
現在步入正題,這篇文章是關於自有許可權管理系統設計的思路描述,自有許可權管理系統是拋棄django自帶的後臺管理界面,基於自己編寫的許可權管理界面對用戶許可權的管理!
首先上圖:(自己設計的許可權系統界面,代碼將後續文章中寫出)
許可權管理界面主要是添加和刪除許可權,查看官方文檔可知道permission有三個欄位,content_type_id(許可權類型),codename(許可權名稱),name(許可權描述)
查看上圖,可知許可權名稱顯示的中文,django後臺自帶的是英文,如下圖:
當然其中的中文是我自己添加進去的,採用中文的好處還有一個,就是可以通過後臺利用正則表達式篩選出只是中文的許可權,這樣就可以不用顯示出英文的許可權導致用戶看不懂了,中文的正則是[\u4e00-\u9fa5].
後臺view查詢中文許可權代碼如下:
#匹配中文許可權(單個查詢) c = Permission.objects.get(codename__iregex=u'[\u4e00-\u9fa5]') print c #匹配中文許可權(全部查詢) Permission.objects.filter(codename__iregex=u'[\u4e00-\u9fa5]').values()
用戶管理界面是添加用戶和對用戶進行許可權分配操作,如下圖:
或許有人會問道,用戶許可權配置好後,如何實現對一個網頁或者操作的許可權控制呢?
其實代碼和django官網中差不多,在模板中檢驗許可權代碼如下:
{% if perms.auth.業務發展 %} <p class="text-center"><a href="{% url 'keywork' %}">業務發展</a></p> {% else %} <p class="text-center"><a href="javascript:alert('無許可權,請聯繫管理員!')">業務發展</a></p>
{% endif %}
view中檢驗許可權如下
u = User.objects.get(username='賬號')
u.has_perm(u"auth.\u4e1a\u52a1\u53d1\u5c55")
上面這種,需要先用b = list(User.objects.get(username='賬號').get_all_permissions())查看許可權的中文對應pyhton中顯示的代碼
具體製作過程,將在後續的文章中慢慢展開,為了給大家還原一個開發許可權系統的真是過程,而不是只貼一大代碼上來(ps:自己以前就是這樣的)......