美文网首页
2018-06-20 用户权限分组问题

2018-06-20 用户权限分组问题

作者: 梦Delete | 来源:发表于2018-06-20 19:48 被阅读0次

    用户组及权限分配

    组对象包含的字段只有name,但是外键了几张表,能够与user、permissions,产生多对多的关系,我在自定义权限实现中,采用的是权限写死的方法,添加用户组权限。

    创建组的函数采用Group.objects.create(name=xxx),就能实现了。当然也跟创建用户一样,需要先判断是否组名已经存在。

    创建好组名后,下一步就需要为每个组分配权限了,从前端提交过来的权限列表,然后后端采用groups.permissions.add(permission)的方式依次将权限添加进组。

    添加完组权限后,最后一步是将组名添加进用户属性,区分用户属于哪个组。 

    具体实现代码如下:

    # 创建组try:

        Group.objects.get(name=role_name)

        data = {'code': -7, 'info': u'组名已存在'}except Group.DoesNotExist:

        groups = Group.objects.create(name=role_name)

        if log_manage == 'true':

            permission = Permission.objects.get(codename='access_log')

            groups.permissions.add(permission)

        if role_manage == 'true':

            permission = Permission.objects.get(codename='access_role_manage')

            groups.permissions.add(permission)

        if user_manage == 'true':

            permission = Permission.objects.get(codename='access_user_manage')

            groups.permissions.add(permission)

        if get_users is not None:

            for user in get_users:

                # 每个user添加组属性            db_user = get_object_or_404(User, username=user)

                db_user.groups.add(groups)

                data = {'code': 1, 'info': u'添加成功'}

        return HttpResponse(json.dumps(data))

    权限模型及权限控制

    在上一点中用到的Permission.objects.get(codename='access_user_manage')是通过权限模型创建,需要在models中创建一个权限类,然后在meta中进行定义codename。

    classAccessControl(models.Model): """

        自定义权限控制

        """    classMeta:        permissions = (

                ('access_dashboard', u'控制面板'),

                ('access_log', u'日志管理'),

                ('access_role_manage', u'角色管理'),

                ('access_user_manage', u'用户管理'),

            )

    运行后,会自动在数据库中创建相应的表,并且插入数据。

    在创建好权限之后,下一步就是在各个视图中插入权限控制代码了。permission_required(),参数为当前应用名.codename。这样就能控制用户访问,如果用户非法访问则会清空session退出登录。

    @permission_required('webcenter.access_role_manage')@login_requireddefrole_index(request): """

        角色管理首页

        :param request:

        :return:

        """

    相关文章

      网友评论

          本文标题:2018-06-20 用户权限分组问题

          本文链接:https://www.haomeiwen.com/subject/smaxyftx.html