django权限认证

1、首先参考django官方文档,将admin模块搭建起来

2、一般我们设置了admin为管理员,但是管理员默认具备所有权限,即使没有显式赋权。

3、如何查找用户对应的权限

>>>from django.contrib.auth.models import User, Permission
>>> User.objects.get(username__exact='admin').user_permissions.values()
[{'content_type_id': 8, 'codename': u'change_articles', u'id': 23, 'name': u'Can change articles'}]

4、为用户增加权限

>>>permission = Permission.objects.get(codename='change_articles')
>>>user = User.objects.get(username__exact='lbin')
>>>user.user_permissions.add(permission)
>>>user.has_perm('change_articles')  ##has_perm的参数为codename
True

5、列出所有权限codename

>>> Permission.objects.all().values()
[{'content_type_id': 7, 'codename': u'add_logentry', u'id': 19, 'name': u'Can add log entry'}, {'content_type_id': 7, 'codename': u'change_logentry', u'id': 20, 'name': u'Can change log entry'}, {'content_type_id': 7, 'codename': u'delete_logentry', u'id': 21, 'name': u'Can delete log entry'}, {'content_type_id': 2, 'codename': u'add_group', u'id': 4, 'name': u'Can add group'}, {'content_type_id': 2, 'codename': u'change_group', u'id': 5, 'name': u'Can change group'}, {'content_type_id': 2, 'codename': u'delete_group', u'id': 6, 'name': u'Can delete group'}, {'content_type_id': 1, 'codename': u'add_permission', u'id': 1, 'name': u'Can add permission'}, {'content_type_id': 1, 'codename': u'change_permission', u'id': 2, 'name': u'Can change permission'}, {'content_type_id': 1, 'codename': u'delete_permission', u'id': 3, 'name': u'Can delete permission'}, {'content_type_id': 3, 'codename': u'add_user', u'id': 7, 'name': u'Can add user'}, {'content_type_id': 3, 'codename': u'change_user', u'id': 8, 'name': u'Can change user'}, {'content_type_id': 3, 'codename': u'delete_user', u'id': 9, 'name': u'Can delete user'}, {'content_type_id': 4, 'codename': u'add_contenttype', u'id': 10, 'name': u'Can add content type'}, {'content_type_id': 4, 'codename': u'change_contenttype', u'id': 11, 'name': u'Can change content type'}, {'content_type_id': 4, 'codename': u'delete_contenttype', u'id': 12, 'name': u'Can delete content type'}, {'content_type_id': 8, 'codename': u'add_articles', u'id': 22, 'name': u'Can add articles'}, {'content_type_id': 8, 'codename': u'change_articles', u'id': 23, 'name': u'Can change articles'}, {'content_type_id': 8, 'codename': u'delete_articles', u'id': 24, 'name': u'Can delete articles'}, {'content_type_id': 5, 'codename': u'add_session', u'id': 13, 'name': u'Can add session'}, {'content_type_id': 5, 'codename': u'change_session', u'id': 14, 'name': u'Can change session'}, '...(remaining elements truncated)...']
6、当普通用户访问时,就可以使用权限控制访问了

@permission_required('general.add_articles', raise_exception=True, login_url='/login/')
def home(request):
    #if not request.user.is_authenticated() and not request.user.has_perm('general.add_articles'):
    #   return redirect('/login/')
    return render_to_response('general/home.html')




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值