django 自带的auth认证系统

版本: python2.7

django 1.8.16

project名称:site_test, app: study

目录结构:

-> site_test :tree
.
├── db.sqlite3
├── manage.py
├── site_test
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── views.py
│   ├── views.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── static
└── templates
    ├── index.html
    ├── login.html
    ├── registration
    │   └── login.html
    └── study

1、site_test/settings文件中

INSTALL_APPS中要包含django.contrib.authdjango.contrib.contenttypes。默认就有

django.contrib.contenttypes 是 auth 模块的用户权限处理部分依赖的应用

MIDDLEWARE_CLASSES中要包含:

  • SessionMiddleware :用户处理用户会话。
  • AuthenticationMiddleware: 绑定一个 User 对象到请求中。

默认就有这两个中间件

INSTALLED_APPS = (
    ##其他应用,
    'django.contrib.auth',
    'django.contrib.contenttypes',
   
)

MIDDLEWARE_CLASSES = (
    '其他中间件列表',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)

2、site_test/urls.py 文件

login, loginout是django自带的方法,需要从django.contrib.auth.views中导入才能使用

from django.conf.urls import include, url
from django.contrib import admin

import views

import django.contrib.auth.views as auth_views ##不要忘记导入这个

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),  
    url(r'^login/', auth_views.login),
    url(r'^logout/', auth_views.logout_then_login),
    url(r'^$', views.index),
]

自带的url有以下这些:

^login/$ [name='login']
^logout/$ [name='logout']
^password_change/$ [name='password_change']
^password_change/done/$ [name='password_change_done']
^password_reset/$ [name='password_reset']
^password_reset/done/$ [name='password_reset_done']
^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm']
^reset/done/$ [name='password_reset_complete']

3、site_test/views.py :

该文件定义了访问index页面的视图方法,该文件需要自己创建。加上login_required() 意思是在访问该页面之前需要登录

#coding:utf-8
from django.shortcuts import redirect,render

from django.contrib.auth.decorators import login_required

@login_required()
def index(request):
    return render(request, 'index.html')

login.html:

该文件位于templates/registration/login.html

注意:login.html不一定要位于registration目录下

如果您不想调用模板registration/login.html,您可以通过额外的参数将template_name参数传递给as_view你的URLconf中的方法。

例如,下面URLconf中的行将使用myapp/login.html:

url(r'^accounts/login/$', auth_views.LoginView.as_view(template_name='myapp/login.html')),

login.html文件内容

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
</head>

<body>

    <form action='.' method='post'>
    {% csrf_token %}
    <label for="username">用户名:</label>
    <input type="text" name="username" value="" id="username">
    <label for="password">密码:</label>
    <input type="password" name="password" value="" id="password">
    <!--<input type="submit" value="login">-->
    <input type="submit" value="login">
    <input type="hidden" name="next" value="{{ next|escape }}">
  </form>

  </body>
</html>

4、settings.py中加 LOGIN_URL(未通过认证时跳转的认证页面) 和 LOGIN_REDIRECT_URL (登录成功后默认跳转的页面)

LOGIN_URL='/login'            ##登录页面的url

LOGIN_REDIRECT_URL='/'  ##登陆后跳转的页面,即索引页面

5、index.html文件

html文件中要可以直接通过{{ user }}获取用户名

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
{{ user }}
<a href="/logout/">退出</a>
<h1>欢迎访问index页面</h1>
</body>
</html>

登录测试

注销后返回到登录页面

参考文档:http://python.usyiyi.cn/translate/django_182/topics/auth/default.html

http://blog.nsfocus.net/django-easy-steps-user-authentication/

https://www.zmrenwu.com/post/30/

原文地址:http://blog.51cto.com/zengestudy/2072709

时间: 2024-10-08 02:13:18

django 自带的auth认证系统的相关文章

Django 【第七篇】Django自带的auth认证

一.auth模块 from django.contrib import auth 1 .authenticate()   :验证用户输入的用户名和密码是否相同 提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的.当我们试图登陆一个从数据库中直接取出来不经过authent

Django实现cookie&amp;session以及认证系统

COOKIE&SESSION 知识储备 由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是"谁"了. cookie虽然在一定程度上解决了"保持状态"的需求,但是由于cookie本身最大支持4096字节,以及co

Django之中间件及Auth认证模块

CBV加装饰器 # 写一个装饰器验证session def login_auth(func): def inner(request,*args,**kwargs): if request.session.get('is_login'): return func(request,*args,**kwargs) else: return redirect('/login/') return inner # 写一个类作为网站主页,必须登陆才能访问 # 给里面的get,post方法加装饰器 class

java 发送带Basic Auth认证的http post请求

构造http header private static final String URL = "url"; private static final String APP_KEY = "key"; private static final String SECRET_KEY = "secret"; /** * 构造Basic Auth认证头信息 * * @return */ private String getHeader() { String

python—day66 Django自带的用户认证 Auth模块

 Auth模块: 导入auth模块 from django.contrib import auth 这个模块主的三个方法: 1.authenticate()  2.login(request, user) 3.logout(request) 原文地址:https://www.cnblogs.com/kermitjam/p/9248652.html

Django Authentication 用户认证系统

一. Django的认证系统 Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. 1.1 概览 Django的认证系统包含了身份验证和权限管理两部分.简单地说,身份验证用于核实某个用户是否是合法用户,权限管理则是决定一个合法用户具有哪些权限.这里,"身份验证"这个词同时代指上面两部分的含义. 系统主要包括: 用户 许可 组 可配置的密码哈希系统 用于用户登录或者限制访问的表单和视图工具 可插拔的后端 类似下面的问题,请使用第三方包: 密码强度检

Django进阶-Auth认证模块

转自:https://www.cnblogs.com/liwenzhou/p/9030211.html Django自带的用户认证系统 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据. auth模块 authenticate(

django认证系统 Authentication

Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. Django的认证系统包含了身份验证和权限管理两部分.简单地说,身份验证用于核实某个用户是否合法,权限管理则是决定一个合法用户具有哪些权限.往后,‘认证’这个词同时代指上面两部分的含义. Django的认证系统主要包括下面几个部分: 用户 许可 组 可配置的密码哈希系统 用于用户登录或者限制访问的表单和视图工具 可插拔的后台系统 类似下面的问题,不是Django认证系统的业务范围,请使用第三方工具: 密

Django 框架篇(十): django自带的认证系统

Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据. 回到顶部 auth模块 from django.contrib import auth auth中提供了许多实用方法: authenticate()