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.什么是权限管理: .权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源 .权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个系 ...
随机推荐
- Hibernate fetch相关
fetch=FetchType.LAZY 时,spring boot jackson 返回数据时会出错. 可配置使用Hibernate4Module 帮助解决: @Configurationpubli ...
- linux 查看网络流量命令
转: linux 查看网络流量命令 2019年01月31日 14:22:00 weixin_33894992 阅读数 893 sar命令参数很多,有时间man一下. -n参数很有用,他有6个不同的 ...
- 启动Spring boot报错:nested exception is java.sql.SQLException: Field 'id' doesn't have a default value
先看具体日志: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with n ...
- IIS中应用Application Request Route 配置负载均衡
转自:https://blog.csdn.net/wucong60/article/details/84930234 简介ApplicationRequest Route(后面简称为ARR)是一个寄宿 ...
- MATLAB绘图及例子总结
MATLAB绘图及例子总结 二维图 例 1 X1=[1,2,4,6,7,8,10,11,12,14,16,17,18,20]; Y1=[1,2,4,6,7,8,10,10,8,7,6,4,2,1]; ...
- C#使用MPI进行高性能计算
MPI.NET是用于Microsoft.NET环境的高性能.易于使用的消息传递接口(MPI)实现.mpi是编写在分布式内存系统(如计算集群)上运行的并行程序的事实上的标准,并且得到了广泛的实现.大多数 ...
- 删除Vue中无权限的【node_modules】文件
npm install rimraf -g rimraf node_modules
- eNSP——配置Trunk接口
原理: 在以太网中,通过划分 VLAN 来隔离广播域和增强网络通信的安全性.以太网通常由多台交换机组成,为了使 VLAN 的数据帧跨越多台交换机传递,交换机之间互连的链路需要设置为干道链路( Trun ...
- Mybatis之自动生成
使用Mybatis来自动生成我们的dao接口,mapper文件和实体类. 1.pom.xml依赖: <dependencies> <dependency> <groupI ...
- [AT2062] ~K Perm Counting
AT2602 , Luogu 求对于 \(n\) 个数的排列 , 有多少种方案满足对于所有的 \(i\) , \(|P_i - i| != K\) , 答案对 \(924844033\) 取模 . \ ...