基于 Django1.10 文档的深入学习(33)—— Using the Django authentication system 之login_required和LogiRequiredMixin
来源:互联网 发布:seo学习书籍 编辑:程序博客网 时间:2024/05/22 02:22
Using the Django authentication system使用Django认证系统
本文档介绍了Django身份验证系统的默认配置。 这种配置已经演变为满足最常见的项目需求,处理相当广泛的任务,并且仔细地实现了密码和权限。 对于认证需求与默认值不同的项目,Django支持大量扩展和定制认证。
Django认证一起提供认证和授权,通常被称为认证系统,因为这些功能有些耦合。
The login_required decorator login_required
装饰器
login_required(redirect_field_name='next', login_url=None)[source]
作为一个捷径,你可以使用方便的login_required()
装饰器:
from django.contrib.auth.decorators import login_required@login_requireddef my_view(request): ...
login_required()
执行以下操作:
- 如果用户没有登录,重定向到
settings.LOGIN_URL
,传递查询字符串中的当前绝对路径。 示例:/ accounts /login /?next = / polls / 3 /
。 - 如果用户登录,则正常执行该视图。 视图代码可以自由地假定用户登录。
默认情况下,成功认证时用户应重定向到的路径存储在名为“next”
的查询字符串参数中。 如果您希望为此参数使用不同的名称,login_required()
将使用一个可选的redirect_field_name
参数:
from django.contrib.auth.decorators import login_required@login_required(redirect_field_name='my_redirect_field')def my_view(request): ...
请注意,如果为redirect_field_name
提供值,则很可能需要自定义登录模板,因为存储重定向路径的模板上下文变量将使用redirect_field_name
的值作为其键而不是“next”
(默认值) )。
login_required()
也使用一个可选的login_url
参数。 例:
from django.contrib.auth.decorators import login_required@login_required(login_url='/accounts/login/')def my_view(request): ...
请注意,如果您没有指定login_url
参数,则需要确保settings.LOGIN_URL
和您的登录视图正确关联。 例如,使用默认值,将以下行添加到URLconf
中:
from django.contrib.auth import views as auth_viewsurl(r'^accounts/login/$', auth_views.login),
settings.LOGIN_URL
还接受视图函数名称和命名URL模式。 这允许您自由地重新映射您的URLconf
中的登录视图,而无需更新设置。
注意
login_required
装饰器不会检查用户的is_active
标志,但默认的AUTHENTICATION_BACKENDS
会拒绝不活动的用户。
也可以看看
如果您正在为Django的管理员编写自定义视图(或需要相同的权限检查内置视图使用),您可能会发现
django.contrib.admin.views.decorators.staff_member_required()
装饰器是login_required()
的有用替代方法。
The LoginRequired mixin
使用基于类的视图时,可以通过使用LoginRequiredMixin来实现与login_required相同的行为。 这个mixin应该在继承列表的最左边的位置。
class LoginRequiredMixin
如果视图正在使用此mixin
,则所有未经身份验证的用户的请求将被重定向到登录页面,或者显示一个HTTP 403 Forbidden
错误,具体取决于raise_exception
参数。
您可以设置AccessMixin
的任何参数来自定义未授权用户的处理:
from django.contrib.auth.mixins import LoginRequiredMixinclass MyView(LoginRequiredMixin, View): login_url = '/login/' redirect_field_name = 'redirect_to'
注意
就像
login_required
装饰器一样,此mixin
不会检查用户的is_active
标志,但默认的AUTHENTICATION_BACKENDS
拒绝不活动的用户。
- 基于 Django1.10 文档的深入学习(33)—— Using the Django authentication system 之login_required和LogiRequiredMixin
- 基于 Django1.10 文档的深入学习(18)—— Using the Django authentication system 之 LoginRequiredMixin
- 基于 Django1.10 文档的深入学习(20)—— Using the Django authentication system 之 login()
- 基于 Django1.10 文档的深入学习(34)—— Customizing authentication in Django 之 基础
- 基于 Django1.10 文档的深入学习(16)——Authentication backends 之 class ModelBackend
- 基于 Django1.10 文档的深入学习(32)—— The Django admin site 之 基础
- 基于 Django1.10 文档的深入学习(11)—— django.shortcuts 之 render()
- 基于 Django1.10 文档的深入学习(12)—— django.shortcuts 之 redirect()
- 基于 Django1.10 文档的深入学习(13)—— django.core.urlresolvers 之 reverse()
- 基于 Django1.10 文档的深入学习(17)——Customizing authentication 之 Custom users and permissions
- 基于 Django1.10 文档的深入学习(10)—— django.contrib.auth 之 User model
- 基于 Django1.10 文档的深入学习(27)—— django.conf.urls utility functions 之 url(),include(),static()
- 基于 Django1.10 文档的深入学习(15)——django.contrib.auth.hashers
- 基于 Django1.10 文档的深入学习(21)——The Forms API 之 Form.errors
- 基于 Django1.10 文档的深入学习(2)—— Settings.py 之 STATIC_*
- 基于 Django1.10 文档的深入学习(3)—— models.py 之 FileField
- 基于 Django1.10 文档的深入学习(4)—— models.py 之 class Meta
- 基于 Django1.10 文档的深入学习(5)—— Making queries 之 FOO_set
- facebook的Android调试工具Stetho的简单使用
- ORACLE11G建临时表空间>建表空间>建用户>给用户授权
- 欢迎使用CSDN-markdown编辑器
- 机器学习之神经网络
- android百度地图,路线规划增加没有路的虚线。
- 基于 Django1.10 文档的深入学习(33)—— Using the Django authentication system 之login_required和LogiRequiredMixin
- Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK
- CSDN博文插入公式
- 生成格雷码
- Nginx+Tomcat配置集群session共享
- 基于mysql体系结构的深入解析
- sql中的CASCADE和RESTRICT
- Python爬虫练习笔记一
- PCB layout 实用小常识