django认证系统

简介:

Django认证系统同时处理认证和授权。简单地讲,认证验证一个用户是否它们声称的那个人,授权决定一个通过了认证的用户被允许做什么。这里的词语“认证”同时指代这两项任务。

认证系统包含:

  • 用户

  • 权限:二元(是/否)标志指示一个用户是否可以做一个特定的任务。

  • 组:对多个用户运用标签和权限的一种通用的方式。

  • 一个可配置的密码哈希系统

  • 用于登录用户或限制内容的表单和视图

  • 一个可插拔的后台系统



使用:

位于django.contrib.auth,配置在settings.py中的

INSTALLED_APPS = [

    'django.contrib.auth', #包含认证框架的核心和默认的模型。

    'django.contrib.contenttypes',] #是Django内容类型系统,它允许权限与你创建的模型关联。

MIDDLEWARE = [

    'django.contrib.sessions.middleware.SessionMiddleware',#管理请求之间的会话

    'django.contrib.auth.middleware.AuthenticationMiddleware',] #使用会话将用户与请求关联起来。

有了这些设置,运行manage.py migrate命令将为认证相关的模型创建必要的数据库表并为你的应用中定义的任意模型创建权限


登录:

from django.contrib.auth import authenticate, login
def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
            ...
    else:
        # Return an 'invalid login' error message.
        ...

注销:

from django.contrib.auth import logout
def logout_view(request):
    logout(request)
    # Redirect to a success page.

只允许登录的用户访问:

方法一:

from django.conf import settings
from django.shortcuts import redirect
def my_view(request):
    if not request.user.is_authenticated():
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
    # ...

方法二:

login_required装饰器

from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
    ...

    主要完成两件事:

    1、如果用户没有登入,则重定向到settings.LOGIN_URL(需要设置),并将当前访问的绝对路径传递到查询字符串中。例如:/accounts/login/?next=/polls/3/。

    2、如果用户已经登入,则正常执行视图。视图的代码可以安全地假设用户已经登入。

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_views
url(r'^accounts/login/$', auth_views.login),


跳转到登录之前的页面,即next=XXX页面:

from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect
@login_required(login_url='/accounts/login/')
def my_view(request):
    return redirect(request.GET.get('next') or '/')


本文转自 AltBoy 51CTO博客,原文链接:http://blog.51cto.com/altboy/1958396

相关文章
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
686 6
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
951 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
318 4
基于Django的深度学习视频分类Web系统
|
数据库 数据库管理 Python
#736421#基于django的个人博客系统
#736421#基于django的个人博客系统
231 4
#736421#基于django的个人博客系统
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
1059 7
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
671 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
370 5
|
数据库 数据库管理 Python
#73623#基于django的园区对比系统
#73623#基于django的园区对比系统
503 4
|
数据库 数据安全/隐私保护 数据库管理
#099473#基于django的毕业生信息管理招聘系统
#099473#基于django的毕业生信息管理招聘系统
238 4