整体思路:在用户登陆之后拿到用户的信息,加入session
from rbac.models import UserInfo
from django.shortcuts import render
# 判断用户是否存在
obj = UserInfo.object.filter(name=‘用户名‘, pwd=‘密码‘).first()
if not obj:
return render(request, ‘login.html‘, {"msg":"用户名或密码错误"})
# 用户信息和权限信息写入session
obj.roles.all().values(‘id‘, ‘title‘, ‘permissions__url‘) # 用户信息和角色信息是多对多的关联关系, roles和permissions是多对多的关联关系,这里反向查询用户关联的角色下的权限
obj.roles.all() #会把和这个用户相关的id和title,permission__url都查询出来,使用filter加条件可以过滤到用不到的数据,
obj.roles.filter(permissions__url__isnull).values(‘id‘, ‘title‘, ‘permissions__url‘) #过滤到用permissions__url 为空的字段
permission_list = obj.roles.filter(permissions__url__isnull).values(‘id‘, ‘title‘, ‘permissions__url‘).distinct()去重
# 用户权限写入session
request.session = list(permission_list)
配套的视频
https://www.bilibili.com/video/BV1DE41147b9?p=13
原文:https://www.cnblogs.com/bibicode/p/13599790.html