Django学习手册 - 登录装饰器】的更多相关文章

# 装饰器定义 def auth(func): def inner(request,*args,**kwargs): v = request.COOKIES.get("user") if not v: return redirect("/login/") return func(request,*args,**kwargs) return inner # FBV 方式 # @auth # def index(request): # v = request.COOKI…
生成验证码函数 import random from PIL import Image, ImageDraw, ImageFont, ImageFilter _letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z _upper_cases = _letter_cases.upper() # 大写字母 _numbers = ''.join(map(str, range(3, 10))) # 数字 init_chars…
一.csrf攻击 1.1 csrf攻击(跨站请求伪造) [csrf攻击即]:通过第3方网站,伪造请求(前提条件是你已经登录正常网站,并保存了session或cookie登录信息且没有退出),第三方网站即可通过你的session或cookie直接修改正常网站的用户名密码. 首先做一个登录页,让用户输入用户名和密码进行登录,登录成功之后跳转的修改密码页面.在修改密码页面输入新密码,点击确认按钮完成密码修改. 登录页需要一个模板文件login.html.修改密码页面也需要一个模板文件change_pw…
1.FBV方式:添加验证装饰器 def auth(func): def deco(request, *args, **kwargs): u = request.get_signed_cookie('username', salt='user', default=None) if not u: return render(request, 'login.html') return func(request, *args, **kwargs) return deco @authdef index(r…
装饰器就是一个函数,他是通过不修改某个函数的源代码和调用方式的前提下可以添加新功能的一种函数.在python 中装饰器一般采用高阶函数和嵌套函数达到装饰的作用,下面进行实例讲解: 1.目前有一个网址有很多页面(比如:index,home,bbs).因为时老文字,所有页面都是可以直接浏览的.实现效果如下: def home():#模拟网页homne print("wolcome to home") def bbs():#模拟网页bbs print("wolcome to bbs…
django类视图的装饰器验证 django类视图的get和post方法是由View内部调用dispatch方法来分发,最后调用as_view来完成一个视图的流程. 函数视图可以直接使用对应的装饰器 类视图可以用MixIn的方法来对类视图的dispatch或as_view方法对一个的封装 django提供了一个method_decorator的装饰器可以直接对类视图的处理方法进行装饰 from django.utils.decorators import method_decorator fro…
前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来维护统一的用户名和密码,第二层次就是sso单点登录,即一个系统登录,其他系统即是登录状态,一个系统登出,其他系统也自动登出,也就是我们登录公司内部的N个系统,其实总共只需要登录一次即可. 目前,django的下游系统可以接入单点,理论上,只要语言支持memcache客户端,通过session维持登录…
cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,salt="加密盐",....) 参数: key 键 value=“” 值 max_age=None 超时时间 expires=None 超时日期 path="/" cookit生效的路径,/表示根路径,特殊的,跟路径的cookie可以被任何url被任何url的页面访问…
关于装饰器 示例: 有返回值的装饰器:判断用户是否登录,如果登录继续执行函数,否则跳回登录界面 def auth(func): def inner(request, *args, **kwargs): username = request.COOKIES.get('username') if not username: # 如果无法获取 'username' COOKIES,就跳转到 '/login.html' return redirect('/login.html') # 原函数执行前 re…
开放封闭原则:不改变调用方式与源代码上增加功能 ''' 1.不能修改被装饰对象(函数)的源代码(封闭) 2.不能更改被修饰对象(函数)的调用方式,且能达到增加功能的效果(开放) ''' 装饰器 # 把要被装饰的函数作为外层函数的参数通过闭包操作后返回一个替代版函数 # 被装饰的函数:fn # 外层函数:outer(func) outer(fn) => func = fn # 替代版函数: return inner: 原功能+新功能 def fn(): print("原有功能")…