开发者

django验证系统的具体使用

开发者 https://www.devze.com 2023-03-22 09:32 出处:网络 作者: 黑洞存在着蓝天
目录user对象创建用户创建超级用户更改密码验证用户web请求认证用户如何登陆用户如何登出限制对未登录用户的访问LoginRequired Mixinuser对象
目录
  • user对象
  • 创建用户
  • 创建超级用户
  • 更改密码
  • 验证用户
  • web请求认证
  • 用户如何登陆
  • 用户如何登出
  • 限制对未登录用户的访问
  • LoginRequired Mixin

user对象

用户对象是认证系统的核心。django的认证框架中的用户只有一个类

默认用户的主要属性

  • username
  • password
  • email
  • first_name
  • last_name

创建用户

创建用户最直接的方法是使用包含create_user()的函数

from django.contrib.auth.models import User
user=User.objects.create_user("username","email","password")

创建超级用户

通过命令行方式创建超级用户

python manage.py createsuperuser 

更改密码

第一种:通过命令行方式

python manage.py changepassword 开发者_C教程(你的用户名,如果没有输入,默认当前的用户)

第二种:通过数据模型开修改

from django.contrib.auth.models importf User
user=User.objects.get(username=(需要修改的用户名))
user.set_password("new password")
user.save()

验证用户

authenticate(request,username,password)

使用authenticate(request)来验证用户。它使用username和password作为参数来验证,对每个身份验证后端进行检查。如果后端验证有效,则返回一个User对象,如果没有,将返回None

web请求认证

django使用sessions和中间件将身份验证系统挂接到请求对象中

它们在每次请求都会提供request.user属性。如果当前没有用户登录。这个属性将会设置为AnonymousUser,否则将会被设置为user实例

你可以使用is_authenticatded区分两者

只读属性,始终返回 True (匿名用户 AnonymousUser.is_authenticated 始终返回 False )。这是一种判断用户是否已通过身份认证的方法。这并不意味着任何权限,也不会检查用户是否处于活动状态或是否具有有效会话。即使通常你会根据 request.user 检查这个属性,以确定它是否被 AuthenticationMiddleware 填充(表示当前登录的用户),但是你应该知道该属性对于任何 User 实例都返回 True。

if repythonquest.user.is_authenticated:
    pass
else:
    pass

用户如何登陆

如果有已验证的用户想添加到session中,将通过login()函数完成

login(request,user,)要在视图中让用户登录,使用 login() 。它需要 HttpRequest 对象和 User 对象。通过 Django 的 session 框架, login() 会在 session 中保存用户的ID。

from django.contrib.auth import authenticate,login
def fun(request):
    username=request.POST("username")
    password=request.POST("password")
    user=authenticate(request,username=username,password=password)
    if user is not None:
        login(request,user)
    else:
        pass

用户如何登出

logout(request)

如果已经通过django.contrib.auth.login()登录的用户想要登出,可以使用logout()方法,需要传入request

from django.contrib.auth import logout
def logout_view(request):
    logout(request)

限制对未登录用户的访问

原始方式

限制访问页面最原始的办法就是检查,request.user.is_authenticated并重定向到登录页面

from django.conf import settings
from django.shortcuts import redirect
d编程客栈ef my_view(request):
    if not request.use编程客栈r.is_authenticated:
        return redirect()

login_required装饰器

作为快捷方式,你可以使用login_required()装饰器

from django.contrib.auth.decorators import login_required
@login_required
def my_vi编程客栈ew(request):
    ...

login_required()会执行以下操作:

  • 如果用户没有登录,会重定向到settings.LOGIN_URL,并传递绝对路径到查询字符串中,例如: /accounts/login/?next=/polls/3/ 。
  • 如果用户已经登录,则正常执行视图
  • login_required()也有可选参数login_url用来指定重定向的路由
  • 默认情况下,成功验证时用户跳转的路径保存在名为 "next" 的查询字符串参数中。如果你希望这个参数使用不同名称,请在 login_required() 中传递可选参数 redirect_field_name :

LoginRequired Mixin

使用基于类的视图时,可以使用LoginRequiredMixin实现和login_required相同的行为。这个Mixin应该在继承列表最左边的位置

from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin,View):
    login_url="/login/"
    redirect_field_name="xxx"

到此这篇关于djanQGuUsgo验证系统的具体使用的文章就介绍到这了,更多相关django 验证系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号