auth_user
表:
auth_user表存储用户信息
模块导入
from django.contrib import auth
命令行添加用户. auth_user表是django自带,并不是models.py创建
python manage.py createsuperuser
auth_user表结构
username: 用户名. 150字符,唯一
first_name: 30字符. 可为空
last_name: 30字符, 可为空
email: 可为空
password: 哈希加密后的密码
is_staff: 是否可进入admin站点.是否为员工.不使用admin可以忽略
is_active: 是否可用.如要删除账号的数据,设置此值为false,不是真正的从数据库删除
is_superuser: 是否超级管理员,超级管理员拥有整个网站的所有权限
last_login: 上次登陆时间
date_joined: 账号创建时间
auth_user
方法:
authenticate(username=.., password=…)
user对象
None
from django.contrib.auth import authenticate # 方法导入
user_obj = auth.authenticate(username=‘sunny‘, password=‘password‘)
**login(HttpRequest, user)
**
from django.contrib.auth import authenticate, login
user_obj = auth.authenticate(username=‘sunny‘, password=‘password‘)
if user_obj:
# 保存用户状态信息
login(request, user_obj) # request.session[‘session_id‘]=user_obj.pk
# redirect to a sucess page.
.....
else:
# return an ‘invalid login‘ error message
.....
没有经过login方法封装的用户, 是匿名用户
只要使用login(request, user_obj)之后,request.user 就能取得当前登陆的用户对象. 否则request.user得到的是一个匿名用户对象(AnonymousUser Object, request.user默认值), 值都为空或false
request.user对象本身是全局对象,可以直接在模板中使用{{request.user.username}}
详见
AuthenticationMiddleware
中间件源码
logout(request)
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# redirect to login page
原文:https://www.cnblogs.com/relaxlee/p/12944282.html