一、

自己写登陆需要注册,一个session的处理,还有一个session的删除

#自定义一个闭包装饰器,来验证
def checkLogin(func):
def wrapper(request, *args, **kwargs):
is_login = request.session.get('IS_LOGIN', False)
if is_login:
return func(request, *args, **kwargs)
else:
# del request.session['IS_LOGIN']
return redirect('/Index/')
return wrapper class Index(View):
def get(self,request):
is_login=request.session.get('IS_LOGIN')
if is_login:
del request.session['IS_LOGIN']
return render(request, 'index.html')
else:
return render(request,'index.html') class Login(View): def post(self,request):
username=request.POST.get('username')
user_list = Sjuser.objects.filter(name=username).first()
request.session['IS_LOGIN'] = True
request.session['uname']=user_list.name
contex={
'user_name':user_list.name
}
return render(request,'index.html', context=contex)
class Logout(View):
def get(self,request):
# logout(request)
# request.session.flush()
del request.session['IS_LOGIN']
return redirect('/Index/')

注意:使用自己定义验证,必须注册删除session 要使用del request.session,不可以使用logout(request),因为此方法是专用于auth 中的用户,否则会出现匿名用户

HTML中验证可以使用

              {% if request.session.IS_LOGIN %}

二、(借用有两种方式)

1.借用django中已经有的用户类:AbstractBaseUser

在models.py中如下定义model类

from django.contrib.auth.base_user import AbstractBaseUser
class kkuser(AbstractBaseUser):
name=models.CharField(max_length=30,verbose_name=u'客户')
total=models.IntegerField(verbose_name=u'投注')
class Meta:
verbose_name=u'抽奖客户'
verbose_name_plural=verbose_name
USERNAME_FIELD = 'name' 那么在views.py中,就可以直接使用login登陆,即可实现登陆验证
from django.contrib.auth import login
from .models import kkuser class Login(View):
def post(self,request):
username=request.POST.get('username')
user_list=kkuser.objects.filter(name=username).first()
if user_list:
login(request, user_list)
contex={
'user':user_list.name
}
return render(request,'index.html',contex)

此上面方法,虽然可以直接可以借用,但是在admin后中会出现 password,last_login ,可以使用去除:exclude = ["password", "last_login"] 即可

class kkuseradmin(object):
list_display=['name','total']
exclude = ["password", "last_login"]
xadmin.site.register(kkuser,kkuseradmin)

在HTML中即可使用以下方式验证

              {% if request.user.is_authenticated %}{%end if %}

2.借用 @property ,可以直接给所定义的model类加上属性,这个是django中已经有定义好的,可以直接拿来用

from django.utils.deprecation import CallableTrue

class kkuser(AbstractBaseUser):
name=models.CharField(max_length=30,verbose_name=u'客户')
total=models.IntegerField(verbose_name=u'投注')
class Meta:
verbose_name=u'抽奖客户'
verbose_name_plural=verbose_name
@property
def is_authenticated(self):
return CallableTrue

在HTML中即可使用此方式来验证

              {% if request.user.is_authenticated %}{%end if %}

自己写登陆验证及借用auth的is_authenticated验证是否登陆的更多相关文章

  1. springboot成神之——basic auth和JWT验证结合

    本文介绍basic auth和JWT验证结合 目录结构 依赖 config配置文件WebSecurityConfig filter过滤器JWTLoginFilter filter过滤器JWTAuthe ...

  2. 从零写一个Asp.net core手脚架(模型验证)

    一个asp.net core项目,一定包含了各种的实体,在RESTful api里面,有很多的参数传递,不建立实体则大量的参数需要自定验证正确性,并且Action上面会写的密密麻麻的参数 在asp.n ...

  3. 项目演化系列--验证体系(基于angular的前端验证)

    前言 之前分享的<web项目演化--验证体系>中提到基于angular的验证,但是为了以防读者迷惑,能够好的理解验证体系,所以没有详细介绍. 今天特地补写一篇关于构建angular的验证. ...

  4. 让 ASP.NET JS验证和服务端的 双验证 更简单

    只用JavaScript验证安全不安全谁都知道,答案是不安全,非常的不安全.因为在客户端进行的验证相当于“让用户自己验证自己”,很明显是不靠谱的.你不能避免一些恶意用户人为的修改自己的表单进行欺骗,也 ...

  5. windows身份验证模式和SQL server身份验证模式 有什么不同

    两个验证方式是有明显不同的. 主要集中在信任连接和非信任连接. windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证 ...

  6. ebay如何确定同一电脑登陆了多个账号,以及同一账号登陆过多台电脑

    转自hilton 的BLOG http://jimqu.blog.51cto.com/105370/654691 一切要从ebay的买家保护说起 ebay作为一个电子商务平台,之所以可以汇聚如此众多的 ...

  7. django 登陆增加除了用户名之外的手机和邮箱登陆

    在setting内增加 # Application definition AUTHENTICATION_BACKENDS = ( 'users.views.CustomBackend', ) 在vie ...

  8. 仿联想商城laravel实战---4、验证(lavarel的表单验证如何使用)

    仿联想商城laravel实战---4.验证(lavarel的表单验证如何使用) 一.总结 一句话总结: 验证规则和验证信息的数组:在控制器的方法中 1.注册页面中的用户名正确(比如是否重名,字段长度是 ...

  9. 原生js制作表单验证,基本的表单验证方法

    表单验证是web前端最常见的功能之一,也属于前端开发的基本功.自己完成一个表单验证的开发,也有助于加深对字符串处理和正则表达式的理解. 基本的表单验证包括如:字母验证.数字验证.字母和数字验证.汉字验 ...

随机推荐

  1. SQL 练习37

    检索至少选修两门课程的学生学号 SELECT Student.SId,Student.Sname,选课数 from Student, (SELECT sid,COUNT(cid) 选课数 from s ...

  2. SQL 练习2

    查询同时存在" 01 "课程和" 02 "课程的情况 分析:分别先查询出包含有01课程和02课程 SELECT * from sc WHERE cid='01' ...

  3. 《深入浅出vue.js》阅读笔记之(object)变化侦测

    1.什么是变化侦测? 通常,在运行时应用内部的状态会不断发生变化,此时需要不停地重新渲染页面,这时如何确定状态中发生了什么变化? 变化侦测就是用来解决这个问题的,它分为两种类型,一种是"推& ...

  4. ASP.NET Core:依赖注入

    ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core应用程序可以利用内置的框架服务将它们注入到启动类的方法中,并且应用程序服务能够配置注入.由ASP.NET Core提供的默 ...

  5. SpringCloud之Config

    1.背景 在前的学习中,我们几乎解决了springCloud的所有常规应用,但是大家有没有想过这样一个问题: 是使用微服务后,有非常多的application.yml文件,每个模块都有一个,实际开发中 ...

  6. Qt生成和调用动态库dll,和静态库.a(windows和linux通用)

    系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...

  7. C#多线程---ReaderWriterLock实现线程同步

    一.简介 当我们需要对一个共享资源多次读取的时候,用前面Monitor的同步锁就没有必要了.因为同步锁每次只允许一个线程访问共享资源,其他线程都会阻塞. 此时,通过ReaderWriterLock类可 ...

  8. Jmeter教程 录制脚本

    Jmeter 录制脚本 Jmeter中有2种方法可以录制脚本.  不过我个人非常不推荐录制脚本,录制的脚本混乱,需要再次加工才能使用. 像我这么精通HTTP协议的人. 一直都是使用Fiddler来抓包 ...

  9. APP 兼容性测试之云测平台体验

    前言 兼容性测试主要通过人工或自动化的方式,在需要覆盖的终端设备上进行功能用例执行,查看软件性能.稳定性等是否正常. 对于需要覆盖的终端设备,大型互联网公司,像BAT,基本都有自己的测试实验室,拥有大 ...

  10. JDK、JRE、JVM的基本介绍

    一 .Java三大版本 JavaSE 标准版(桌面程序.控制台开发-) JavaWE 嵌入式开发(手机.家电-) JavaEE 企业开发(web端.服务器开发-) 二.JDK.JRE.JVM区别 JD ...