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')




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章