bootstrap+django搭建防跨站点攻击登陆系统

环境:win10+mysql8.0+django2.0+bootstrap3.7源码已经上传至我的github,欢迎修改使用:django2.0登录系统最终显示结果:

设计的主要逻辑从以下几个方面来考虑:

1.登录:分为get与post两种情况,post即为提交请求,此时进行数据验证,使用django自带的抽象authentication类,使用login和logout类进行登入与登出。2.注册:填写信息,与models层相结合,将数据存入数据库。3.进行页面跳转。具体内容如下:

总目录如图,其中app--mysite的文件内容为:

这两个目录应该不需要解释,django的基本操作。不太清楚的话,可以看我专栏的其他文章。编写model层(models.py)

这里需要说明以下,我编写model层,并不是直接继承的model.Model,而是继承的django自带的登录系统中的AbstractUse类,这是django为了方便做登陆系统,而高度抽象出来的一个基类,查看源码可以发现,其中已经包括了username,password,email等字段,所以你只需要再编写你所需要的字段即可。

继续点击进入即可看见,每个记录的详细内容:

编写forms.py表单层:

注意,表单层使用widget来添加表单属性,继承django.forms类,即可使用。比如,如果你需要输入的是密码,那么,只需要在widget中加入forms.PassInput(attrs=({"class":""},{"id":""}))。编写视图层(views.py)

视图函数这里,有几点需要注意,一是,我使用的是django的通用类视图,也就是继承了dajngo.views.generic中的View,generic中还有许多其他的类,它们都是基于View的。

编写url.py

什么叫跨站点攻击呢?简单来说,就是跨站点请求伪造,当你登录一个网站时,会在你的浏览器上保存一个cookie,如果此时,你正好又去点击了一个不良网站,后台人员,便可以使用保存在你浏览器上的cooike以你的身份去做一些事情。那么dajngo如何来防止这种,情况呢?dajngo使用伪随机数来完成这个操作,使用起来很简单,只需要在表单只能加入{},如

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015A03MI900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券