django 权限控制精简版
视图代码:
视图代码
def index(request):
return render(request,'index.html') def login(request):
if request.method == 'POST':
user = request.POST.get('user')
pwd = request.POST.get('pwd')
user_obj = models.User.objects.filter(username=user,password=pwd).first() #拿用户对象
if not user_obj:
return render(request,'login.html',{'error':"用户名或密码错误"})
#登录成功
#查询权限信息
permissions = user_obj.roles.filter(permissions__url__isnull=False).values("permissions__url").distinct()
#保存权限信息
request.session['permissions'] = list(permissions) #保存登录状态
request.session['is_login'] = ''
return redirect('/index/') return render(request,'login.html') 当用户登录成功后,获取用户权限,并保存到session中,以前保存登录状态
中间件验证
from django.utils.deprecation import MiddlewareMixin
from django.conf import settings
from django.shortcuts import HttpResponse,redirect
import re class RbacMiddleWare(MiddlewareMixin): def process_request(self,request):
url = request.path_info
for i in settings.WHITE_LIST:
if re.match(i,url): #判断是否是白名单
return #登录状态校验
is_login = request.session.get('is_login')
print(is_login)
if is_login != '':
return redirect('/login/') #免认证校验
for i in settings.NO_AUTH_LIST:
if re.match(i,url): #判断是否是免认证
return #权限校验
permissions = request.session.get('permissions')
print(permissions)
for i in permissions:
if re.match(r'^{}$'.format(i['permissions__url']),url):
return
return HttpResponse('没有权限,请连线管理员')
白名单和面验证设置 settings文件
WHITE_LIST = [
r'^/login/$',
r'^/regist/$',
r'^/admin.*/'
] NO_AUTH_LIST = [
r'^/index/$',
]
django 权限控制精简版的更多相关文章
- NETCore Bootstrap Admin 通用后台管理权限 [3]: 精简版任务调度模块
前言 NETCore 里说到任务调度,大家首先想到的应该是大名鼎鼎的 QuartzNET 与 Hangfire,然而本篇介绍的却都不是,而是 Bootstrap Admin(以下简称 BA)通用后台权 ...
- [Python学习] Django 权限控制
本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事. 一.主要内容 1.什么是权限管理? 2.Web 权限 3.Django 权限机制 ...
- Django权限控制进阶
一.一级菜单的排序 我们用字典存放菜单信息,而字典是无序的,当一级菜单过多时可能会出现乱序情况,因此需要给一级菜单排序 1.给一级菜单表的model中加一个weight权重的字段 ,权重越大越靠前 w ...
- Django 权限控制配置步骤
1.models下面添加权限控制信息: class UserProfile(models.Model): user = models.OneToOneField(User) name = models ...
- django权限控制
django 权限机制的实现: http://blog.igevin.info/posts/django-permission/
- 再谈git的http服务-权限控制gitweb版(未成功)
截至目前,对gitweb的掌握还没达到最终目标,仅仅实现了通过浏览器来浏览项目,通过git命令仍然未能clone项目.但仍然要记录下来,主要是因为打算暂时放弃这条路,而所收获的一些经验还是要记录下来. ...
- 再谈git的http服务-权限控制hooks版
通过git-http-backend方法提供的http服务基本上可以做到认证用户才能使用,但只能控制到服务器路径访问,而且无法区分读写.经过不懈努力,找到了方法,相关脚本及配置见后. 基本思路就是利用 ...
- django权限管理(Permission)
什么是权限管理 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自 己被授权的资源 权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个 系统有多 ...
- 一.8.django权限管理/drf权限管理
1.什么是权限管理: .权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源 .权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个系 ...
随机推荐
- ubuntu tensorflow cpu faster-rcnn 测试自己训练的模型
(flappbird) luo@luo-All-Series:~/MyFile/tf-faster-rcnn_box$ (flappbird) luo@luo-All-Series:~/MyFile/ ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_10-webpack研究-安装nodejs
1.3.2.1 安装Node.js webpack基于node.js运行,首先需要安装node.js. node -v:验证是否安装成功了.
- [Scikit-learn] 1.4 Support Vector Classification
Ref: http://sklearn.lzjqsdd.com/modules/svm.html Ref: CS229 Lecture notes - Support Vector Machines ...
- layoutSubviews在以下情况下会被调用
1.init初始化不会触发layoutSubviews2.addSubview会触发layoutSubviews3.设置view的Frame会触发layoutSubviews,当然前提是frame的值 ...
- java 分布式实践
java 分布式实践 spring boot cloud实践 开源的全链路跟踪很多,比如 Spring Cloud Sleuth + Zipkin,国内有美团的 CAT 等等. 其目的就是当一个请求经 ...
- RMQ问题--ST
#include<iostream> #include<cstdio> #include<cmath> using namespace std; ; ]; int ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- C#,CLR,IL,JIT概念 以及 .NET 家族
C#,CLR,IL,JIT概念 以及 .NET 家族 Monitor 类通过向单个线程授予对象锁来控制对对象的访问.对象锁提供限制访问代码块(通常称为临界区)的能⼒.当 ⼀个线程拥有对象的锁时,其 ...
- Js 集合运用
1.给定一个单词good 要求输入 g1 o2 d1 (字母+加字母个数) 方法一: <script type="text/javascript"> var arrO ...
- Collection集合常用的功能
package demo06; import java.util.ArrayList;import java.util.Collection; /** java.util接口 Collection&l ...