新建用户
user = User.objects.create_user(username, email, password)
user.save()
# 不存储用户密码明文而是存储一个Hash值
- 1
- 2
- 3
登录验证
from django.contrib.auth import authenticate
user = authenticate(username=username, password=password)
# 认证用户的密码是否有效, 若有效则返回代表该用户的user对象, 若无效则返回None.
# 该方法不检查is_active标志位.
- 1
- 2
- 3
- 4
- 5
- 6
登录状态
from django.contrib.auth import login,authenticate
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
#此时用户被设置为登录状态
# login向session中添加SESSION_KEY, 便于对用户进行跟踪:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
退出登录
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# logout会移除request中的user信息, 并刷新session
- 1
- 2
- 3
- 4
只允许登录的用户访问
@login_required修饰器修饰的view函数会先通过session key检查是否登录, 已登录用户可以正常的执行操作, 未登录用户将被重定向到login_url指定的位置.
若未指定login_url参数, 则重定向到settings.LOGIN_URL
from django.contrib.auth.decorators import login_required
@login_required(login_url='/accounts/login/')
def userinfo(request):
...
# settings 配置
LOGIN_URL = '/index/'
# views
@login_required
def userinfo(request):
...
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15