当前位置: 首页 > 网络应用技术

如何实施Django的验证代码(2023年的最新完成)

时间:2023-03-05 18:01:14 网络应用技术

  简介:许多朋友问有关Django如何实现验证代码的问题。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!

  前端直接带到用户名,密码和其他参数,以将请求发送到背景。如果您害怕密码安全问题,则可以转到HTTPS或同意解密方法。后端 - 严格验证用户名和密码Matchsession_id的严格验证将cookie设置为前端。

  与朋友合作一个小项目。我负责前端。他负责背景。目前,他不了解如何做到这一点供用户验证。理解传统的会话和访问令牌。

  访问令牌的方法,我可能了解如何完成前端工作。用户名密码验证通过背景背景以返回令牌。之后,前端路线加HTTP截获了所有请求头,必须将所有请求头都附加到该令牌上。但是背景操作更麻烦。

  在当前的网页中,为了防止机器人提交表单,图片验证代码是响应的常见手段之一。我不会在此处详细介绍它。我相信每个人都遇到了它。

  现在,将代码带有Python的PIL库,以实现验证代码的代码图片。代码中有详细的注释。

  #!/usr/bin/env Python

  #coding = UTF-8

  导入随机

  从PIL导入图像,ImageDraw,ImageFont,ImageFilter

  _letter_cases =“ abcdefghjkmnpqrstuvwxy”#<cretest Letters,删除可能的干扰I,L,O,Z

  _UPPER_CASE = _letter_cases.upper()#大_

  _numbers =''.join(Map(str,range(3,10)))#Datter

  init_chars =''.join((_ letter_cases,_upper_cases,_numbers))

  def create_validate_code(size =(120,30),

  chars = init_chars,

  img_type =“ gif”,

  模式=“ RGB”,

  bg_color =(255,255,255),

  fg_color =(0,0,255),

  font_size = 18,

  font_type =“ ae_alarabiya.ttf”,

  长度= 4,

  draw_lines = true,

  n_line =(1,2),

  draw_points = true,

  point_chaance = 2):

  '''

  @todo:生成验证代码图片

  @Param大小:图片的大小,格式(宽度,高度),默认(120,30)

  @param chars:允许的字符集,格式字符串

  @param img_type:图片保存的格式,默认值为gif,选项为gif,jpeg,tiff,png

  @param模式:图片模式,默认为RGB

  @param bg_color:背景颜色,默认为白色

  @param FG_Color:潜在颜色,验证代码字符颜色,默认为蓝色#0000FF

  @param font_size:验证代码字体大小

  @param font_type:验证代码字体,默认为ae_alalalabiya.ttf

  @param长度:验证代码字符编号

  @param draw_lines:是否转移线

  @param n_lines:干扰行的数量,格式元素组,默认值(1,2),只有draw_lines是有效的

  @param draw_points:是否绘制干扰点

  @Param Point_chance:干扰点的概率,大小范围[0,100]

  @return:[0]:pil图像实例

  @return:[1]:验证代码图片中的字符串

  '''

  宽度,高度=尺寸#宽,高度

  img = image.new(模式,大小,bg_color)#创建图形

  draw = imagedraw.draw(img)#创建刷子

  def get_chars():

  '''生成给定的长度字符串,返回列表格式''''

  返回率。样本(字符,长度)

  def create_lines():

  ''绘制干扰线'''

  line_num = random.randint(*n_line)#l l l l

  对于我的范围(line_num):

  # 初始点

  开始=(Random.Randint(0,size [0]),Random.Randint(0,size [1]))

  #结

  end =(random.randint(0,size [0]),random.randint(0,size [1]))

  draw.line([[begin,end],填充=(0,0,0,0))

  def create_points():

  ''绘制干扰点'''

  机会= min(100,最大(0,int(point_chance))))##c c C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C。

  对于xrange(宽度)中的w:

  对于Xrange(高度)中的H:

  tmp = random.randint(0,100)

  如果TMP 100 -Chance:

  draw.point((W,H),填充=(0,0,0))

  def create_strs():

  ''绘制验证代码字符''''

  c_chaars = get_chars()

  strs ='%s'%''.join(c_chars)#由每个字符之前和之后的空间分开

  font = imagefont.truetype(font_type,font_size)

  font_width,font_height = font.getSize(strs)

  draw.text((width -font_width) / 3,(高度-font_height) / 3),

  strs,font =字体,填充= fg_color)

  返回 '??'。加入(C_CHARS)

  如果draw_lines:

  create_lines()

  如果draw_points:

  create_points()

  strs = create_strs()

  #图形扭曲参数

  params = [1 -float(random.randint(1,2)) / 100,

  0,

  0,

  0,

  1 -float(Random.Randint(1,10)) / 100,

  float(Random.Randint(1,2)) / 500,

  0.001,

  float(Random.Randint(1,2)) / 500

  这是给予的

  img = img.transform(size,image.perspective,params)#创建失真

  img = img.filter(imagefilter.edge_enhance_more)#过滤器,边界增强(较大阈值)

  返回IMG,strs

  如果__name__ ==“ __ -main __”:

  code_img = create_validate_code()

  code_img.save(“ value.gif”,“ gif”)

  最终结果返回一个元组。第一个返回值是图像类的实例,第二个参数是图片中的字符串(是否正确)。

  最终结果返回一个元组。第一个返回值是图像类的实例,第二个参数是图片中的字符串(是否正确)。

  应该提醒的是,如果生成imageFont.TrueEyype实例时会引发IOERROR异常,则可能是计算机运行代码不包括指定的字体,需要下载和安装。

  生成代码的身份验证代码的效果:

  目前,仔细的同学可能会问,如果生成了验证代码,则必须先保存生成的图片,然后显示页面。这是不可接受的。这次,我们需要使用Python的python build -in stringio模块。它具有类似于文件对象的行为,但它操作内存文件。因此,我们可以像这样编写代码:

  尝试:

  导入CSTRINGIO作为Stringio

  除非Inflterror:

  导入Stringio

  mstream = stringio.stringio()

  img = create_validate_code()[0]

  img.Save(Mstream,“ GIF”)

  这样,当我们需要输出时,我们只需要使用“ mstream.getValue()”。例如,在django中,我们首先定义此URL:

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('example.views',

  url(r'^value/$','value,name ='value'),name ='value'),

  治愈

  在视图中,我们将正确的字符串保存在会话中,以便当用户提交表单时,我们可以与会话中的正确字符串进行比较。

  从django.shortcuts导入httpresponse

  从价值导入create_validate_code

  def validate(请求):

  mstream = stringio.stringio()

  validate_code = create_validate_code()

  img = value_code [0]

  img.Save(Mstream,“ GIF”)

  request.session ['value'] = value_code [1]

  返回httpresponse(mstream.getValue(),“ image/gif”)

  render_to_response('bb.html',{'news':( buf.getValue(),'image/gif')})

  关于这句话有一些问题。回来。

  另外,您的bb.html中的内容是什么?只有一个句子?

  如果是这样。

  r = render_to_response('bb.html',{'news':( buf.getValue(),'image/gif')})})})})})})

  然后引用r,尝试将其内容类型重写为“ image/gif”

  也许成功。也许。

  SMS验证代码登录是登录场景的常见功能。在Towify中,获得验证代码事件和手机登录事件可以帮助每个人快速配置。

  1个效果显示

  通过在按钮组件上配置手机登录事件,同时配置标签文本上的验证代码,以及使用组件来切换空气开关计时组件以实现SMS验证代码登录功能。

  2创建数据表

  提示:在数据中心,您可以创建属于您自己应用程序的数据表。数据表类型分为用户表,产品表,订单表和自定义表。

  点击数据中心

  创建数据表

  在表类型drop -down框中选择用户表

  3创建事件

  提示:事件是一种抽象逻辑,它可以构建数据和接口元素组装链接。数据表和接口元素组件通过事件连接。

  单击事件中心

  添加移动登录活动

  创建一个事件以获取验证代码

  4个触发配置

  提示:面板中的触发设置设置了面板以创建触发器,可以在组件上设置触发器,也可以与事件合作以执行动态数据操作。

  选择组件开关

  单击以检查面板中的扳机

  创建一个触发器

  创建一个切换失败的触发器

  选择验证代码标签文本组件

  创建请求验证代码的触发器

  选择一个计时器组件

  创建激活触发器

  选择验证代码标签文本组件

  创建其他触发器

  选择一个计时器组件

  创建一个开关以获取验证代码触发器

  创建一个监视器状态以更改触发器

  选择登录按钮

  创建登录触发器

  创建登录成功触发器

  创建登录失败触发器

  结论:以上是首席执行官指出,已总结了Django相关内容的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?