引子:
1.为什么需要权限?
由于用户的身份不同,我们需要根据他的角色来给其赋予不同的权限,以便更好分工且避免责任不明确的问题。
2.为什么要开发一个权限组件?
权限问题对于大多数系统都会用到,根据当前实际开发出一套比较完备的权限组件,当业务需要时根据具体业务适当修改,可大量节省开发时间,提高开发效率。
3.再WEB开发中什么是权限?
URL约等于权限,给某用户访问某URL的权限,就是给了他该url对应模块的使用权限。
权限设计的步骤
一 权限表的设计
1.权限表
2.角色表
3.用户表
二 具体权限逻辑的实现
1.写登录函数
1 from django.shortcuts import render, redirect 2 from rbac import models 3 from django.conf import settings 4 def login(request): 5 if request.method=='POST': 6 username=request.POST.get('user') 7 password=request.POST.get('pwd')
用户校验 8 user=models.UserInfo.objects.filter(name=username,password=password).first() 9 if not user: 10 return render(request,'login.html',{'err_msg':'用户名或密码错误'})
校验完成后写到session中
11 permission_list=user.roles.filter(permissions__url__isnull=False).values('permissions__url').distinct() 12 request.session[settings.PERMISSION_SESSION_KEY]=list(permission_list) ---->permission_list为一个QuerySet对象,无法进行JSON操作,故须先进行强制转化 13 request.session['user_info']={'id':user.id,'name':user.name} 14 return redirect('/customer/list/') 15 return render(request,"login.html")
2.