自带登录实例

{% extends "layout/base.html" %}  // 所有link

{% block body %}
<div id="container" class="cls-container"> <!-- BACKGROUND IMAGE -->
<!--===================================================-->
<div id="bg-overlay" class="bg-img" style="background-image: url(img/bg-img-3.jpg)"></div> <!-- LOGIN FORM -->
<!--===================================================-->
<div class="cls-content">
<div class="cls-content-sm panel">
<div class="panel-body">
<div class="mar-ver pad-btm">
<h1 class="h3">LuffyAudit 堡垒机</h1>
<p>Sign In to your account</p>
</div>
<form method="POST">{% csrf_token %}
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="Username" autofocus>
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="Password">
</div> <button class="btn btn-primary btn-lg btn-block" type="submit">Sign In</button>
<span style="color:red;">{{ error }}</span>
</form>
</div> <div class="pad-all">
<a href="#" class="btn-link mar-rgt">Forgot password ?</a>
<a href="#" class="btn-link mar-lft">Create a new account</a> </div>
</div>
</div>
<!--===================================================--> </div>
<!--===================================================-->
<!-- END OF CONTAINER --> {% endblock %}

login.html

from django.db import models
from django.contrib.auth.models import User class Account(models.Model):
"""
堡垒机账户
1.扩展
2.继承
"""
user = models.OneToOneField(User, models.CASCADE)
name = models.CharField(max_length=64)

models.py

LOGIN_URL = '/login/'

settings.py

from django.shortcuts import render,redirect,HttpResponse
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required # @login_required(login_url='/login/') # 单独添加login页面的url
# 或在settings.py设置全局LOGIN_URL = '/login/'
@login_required
def index(request):
return HttpResponse("成功登录index页面!")
return render(request,"index.html") def acc_login(request):
error = ''
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
user = authenticate(username=username,password=password) # 认证
if user:
login(request,user) # 登录
return redirect(request.GET.get('next') or "/index/") # 若有next字段,则跳转到该url,否则index页面
else:
error = "Wrong username or password" return render(request,"login.html",{"error":error}) @login_required
def acc_logout(request):
logout(request) # 登出
return redirect("/login/")

views.py

结果:

单独登录login页面

直接访问index页面,views里的login_required装饰器会跳转到login页面,同时会带有?next=/index/字段的url

此处需在login函数里配置

return redirect(request.GET.get('next') or "/index/")

成功登录

Django之自带认证的更多相关文章

  1. Django的自带认证系统——auth模块

    Django自带的用户认证 auth模块 from django.contrib import auth 备注:使用auth模块时,我们默认使用Django提供的auth_user表,创建数据时,可以 ...

  2. Django 中的用户认证

    Django 自带一个用户认证系统,这个系统处理用户帐户.组.权限和基于 cookie 的 会话.本文说明这个系统是如何工作的. 概览 认证系统由以下部分组成: 用户 权限:控制用户进否可以执行某项任 ...

  3. Django Rest framework 之 认证

    django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest fra ...

  4. day 65 Django基础十一之认证系统

    Django基础十一之认证系统   本节目录 一 auth模块 二 User对象 三 扩展默认的auth_user表 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 auth模块 我们 ...

  5. Django基础八之认证模块---auth

    Django基础八之认证模块---auth 目录 Django基础八之认证模块---auth 1. auth介绍 2. autho常用操作 2.1 创建用户 2.2 验证用户 2.3 验证用户是否登录 ...

  6. [原创]django+ldap实现统一认证部分二(python-ldap实践)

    前言 接上篇文章 [原创]django+ldap实现统一认证部分一(django-auth-ldap实践) 继续实现我们的统一认证 python-ldap 我在sso项目的backend/lib/co ...

  7. [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...

  8. ASP.NET Core 实现带认证功能的Web代理服务器

    引言 最近在公司开发了一个项目,项目部署架构图如下: 思路 如图中文本所述,公司大数据集群不允许直接访问外网,需要一个网关服务器代理请求,本处服务器A就是边缘代理服务器的作用. 通常技术人员最快捷的思 ...

  9. mongodb主从(副本集附仲裁节点)部署带认证模式

    环境:OS:CentOS 7DB:3.0.15机器角色:192.168.1.134:10001 主192.168.1.135:10002 从192.168.1.135:10003 仲裁节点 1.下载相 ...

随机推荐

  1. 细数用anaconda安装mayavi时出现的各种问题

    这段时间需要利用mayavi做科学数据的处理,因此需要利用到mayavi库,但是官网上面的指示说:如果安装了anaconda,其中自带各种科学库,但是实践中,并没有发现mayavi. 官方网站导航:m ...

  2. [Phonegap+Sencha Touch] 移动开发29 安卓navigator.camera.getPicture得到图片的真实路径

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/38313021 phonegap的拍照插件选择图库中的图片.代码例如以下: naviga ...

  3. JQuery Validate插件与实现

    菜鸟拙见,望请纠正 一:效果展示:以下是两个注册表单验证,左边使用Jquery validate插件实现,右边是自己用JQuery实现,效果差不多,但个人推荐用插件,毕竟前人栽了树而且长大了后人当然好 ...

  4. SharePoint Search 分词(WordBreaker)

    [问题] 我们经常会搜索一个很长的词,例如“国際協力銀行” ,对应的搜索结果中会有关于“国際”“協力”“銀行”相关内如都会搜索到,这样的行为就是分词,那如何知道搜索内如是如何分词的呢? [解决办法] ...

  5. Duplicate entry '' for key 'username'

    一.报错信息: ERROR 2019-04-22 02:00:29,971 exceptions 30 [<wechat.views.WixinView object at 0x7f3bb01d ...

  6. 让你的:active好好工作

    在某些版本的safari上,:active伪类不生效,可以通过css和js两种方式hack一下: html <div class="button"> 点击时我应该变红 ...

  7. JavaScript总结(二)

    JavaScript的数据类型 ✍ 原始数据类型值: JavaScript有5中原始数据类型,通过调用typeof运算符返回值查看变量类型: ➣ Undefined ➔ 'undefined': Un ...

  8. RAC建立过程回顾--建立用户和组

    一共需要建立6个组: oinstall dba asmadmin asmdba asmoper oper 要建立两个用户: oracle 和 grid 然后还要给各个用户建立各自的环境变量. 以下的操 ...

  9. c++ 文件共享打开

     _fsopen参数说明  #include<share.h>  _fsopen 共享模式访问文件 //安全性比fopen高 _fsopen 以共享的方式打开文件或者流 FILE * ...

  10. 6-[HTML]-标签属性

    1.HTML标签属性 HTML标签可以设置属性,属性一般以键值对的方式写在开始标签中.如 <div id="i1">这是一个div标签</div> < ...