python项目篇-权限二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27695659/article/details/85108986
 权限粒度控制
	
	简单控制:
	    {% if "users/add" in permissions_list%}


    摆脱表控制
	
	
	更改数据库结构
	    class Permission(models.Model):
			title=models.CharField(max_length=32)
			url=models.CharField(max_length=32)

			action=models.CharField(max_length=32,default="")
			group=models.ForeignKey("PermissionGroup",default=1)
			def __str__(self):return self.title



		class PermissionGroup(models.Model):
			title = models.CharField(max_length=32)

			def __str__(self): return self.title
	

    登录验证:
	    permissions = user.roles.all().values("permissions__url","permissions__group_id","permissions__action").distinct()
        
        构建permission_dict

            permissions:
				[

				 {'permissions__url': '/users/add/', 
				 'permissions__group_id': 1, 
				 'permissions__action': 'add'}, 
				 
				 {'permissions__url': '/roles/', 
				 'permissions__group_id': 2, 
				 'permissions__action': 'list'}, 
				 
				 {'permissions__url': '/users/delete/(\\d+)', 
				 'permissions__group_id': 1, 
				 'permissions__action': 'delete'}, 
				 
				 {'permissions__url': 'users/edit/(\\d+)', 
				 'permissions__group_id': 1, 
				 'permissions__action': 'edit'}
				 ]
				 
            permission_dict

 
				 {
				 
				 1: {
				 'urls': ['/users/', '/users/add/', '/users/delete/(\\d+)', 'users/edit/(\\d+)'], 
				 'actions': ['list', 'add', 'delete', 'edit']}, 
				 
				 2: {
				 'urls': ['/roles/'],
				 'actions': ['list']}
				 
				 }

 
 
    中间价校验权限:
	    permission_dict=request.session.get("permission_dict")

        for item in permission_dict.values():
              urls=item['urls']
              for reg in urls:
                  reg="^%s$"%reg
                  ret=re.match(reg,current_path)
                  if ret:
                      print("actions",item['actions'])
                      request.actions=item['actions']
                      return None

        return HttpResponse("没有访问权限!")

猜你喜欢

转载自blog.csdn.net/qq_27695659/article/details/85108986