Django中怎么使用用户认证模块?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<>强身份验证模块简介强>
auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从用户表里查询有没有用户名和密码符合的对象,而有了身份验证模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中。
除此之外,认证还对会议做了一些封装,方便我们校验用户是否已登录。
<>强身份验证里的方法强>
如果想使用身份验证模块的方法,必须要先导入身份验证模块
得到django.contrib import auth
django.contrib。身份验证中提供了许多方法,这里主要介绍其中的四个:
1,进行身份验证(),,
提供了用户认证,即验证用户名以及密码是否正确,一般需要username 密码两个关键字参数
如果认证信息有效,会返回一个,User 对象.authenticate()会在用户对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的。当我们试图登陆一个从数据库中直接取出来不经过()进行身份验证的用户对象会报错的! !
user =,验证(用户名=& # 39;有人# 39;,密码=& # 39;somepassword& # 39;)
2,登录(HttpRequest、用户)
该函数接受一个HttpRequest对象,以及一个认证了的用户对象。
此函数使用django的会话框架给某个已认证的用户附加上会话id等信息。
得到django.contrib.auth import 认证,登录 ,, def my_view(请求): username 才能=,request.POST[& # 39;用户名# 39;】 时间=password 才能;request.POST[& # 39;密码# 39;】 user =,才能验证(用户名=用户名,密码=密码) if 才能user is  not 没有: ,,,登录(用户请求,,) ,,,#,Redirect 用a success 页面。 ,,,… 其他的才能: ,,,#,Return an & # 39; invalid 登录# 39;error 消息。 ,,,…
3,注销(请求)注销用户
该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的会话信息会全部清除。该用户即使没有登录,使用该函数也不会报错。
得到django.contrib.auth import 注销 ,, def logout_view(请求): 注销才能(请求) ,# Redirect 用a success 页面。
4,用户对象的is_authenticated ()
要求:
1,用户登陆后才能访问某些页面;
2,如果用户没有登录就访问该页面的话直接跳到登录页面;
3,用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址。
方法1:
直接用身份验证的is_authenticated()方法验证
def my_view(请求): ,,if not  request.user.is_authenticated (): ,,,,,return 重定向(& # 39;% s ?下一个=% & # 39;,%,(settings.LOGIN_URL, request.path))
方法2:
根据request.user。用户名来验证,如果为空,则说明没有登录
def my_view(请求): ,,if not  request.user.username: ,,,,,return 重定向(& # 39;% s ?下一个=% & # 39;,%,(settings.LOGIN_URL, request.path))
方法3:
django已经为我们设计好了一个用于此种情况的装饰器:login_requierd ()
得到django.contrib.auth.decorators import login_required ,,,, @login_required def my_view(请求): ,……
若用户没有登录,则会跳转到django默认的登录URL & # 39;/账户/登录/& # 39;(这个值可以在设置文件中通过LOGIN_URL进行修改)。并传递,当前访问url的绝对路径(登陆成功后,会重定向到该路径)。
用户对象
用户对象属性:用户名、密码(必填项)密码用哈希算法保存到数据库
is_staff:用户是否拥有网站的管理权限。
is_active:是否允许用户登录,设置为“假”,可以不用删除用户来禁止用户登录
<强> 1,is_authenticated() 强>
如果是真正的用户对象,返回值恒为真的。用于检查用户是否已经通过了认证。
通过认证并不意味着用户拥有任何权限,甚至也不检查该用户是否处于激活状态,这只是表明用户成功的通过了认证。这个方法很重要,在后台用request.user.is_authenticated()判断用户是否已经登录,如果真正则可以向前台展示request.user.name