第七天笔记

文章展示了如何在Python中使用@property装饰器创建getter和setter方法,以及模拟用户登录过程,利用generate_password_hash和check_password_hash函数验证密码。同时,讨论了在前端发送JSON数据时,如何通过设置CSRFToken来防范跨站伪造攻击。
摘要由CSDN通过智能技术生成

使用@property装饰器编写获取变量值和为变量赋值的函数并演示效果?

//  class Person:
	    def __init__(self,name,age):
	       self.my_name=name
	       self.my_age = age

	    @property
	    def name(self):
		print("===读取变量值时自动调用:name(self)===")
		return self.my_name

	    @name.setter
	    def name(self,name):
		print("===为变量赋值时自动调用:name(self,name)===")
		self.my_name=name

	if __name__ == '__main__':
	    p1 = Person("张三",20)
	    name = p1.name
	    print("name=",name)
	    p1.name="小三"
	    name = p1.name
	    print("name=",name)

不使用数据库的情况下,利用generate_password_hash和check_password_hash函数完成模拟登录效果?

//  from werkzeug.security import generate_password_hash, check_password_hash

	class User:
	    def __init__(self, user_name, password):
		self.user_name = user_name
		self.password = password

	    @property
	    def password(self):
		return self.password_hash

	    @password.setter
	    def password(self, password):
		self.password_hash = generate_password_hash(password)

	    def login(self, user_name, password):
		if self.user_name == user_name:
		    if (check_password_hash(self.password, password)):
			return "【%s】登录成功" % user_name
		    else:
			return "密码【%s】错误" % password
		else:
		    return "用户名【%s】错误" % user_name


	if __name__ == '__main__':
	    p1 = User("admin", "12345")
	    # 模拟用户名错误
	    print(p1.login("hsj", "12345"))
	    # 模拟密码错误
	    print(p1.login("admin", "hsj"))
	    # 模拟登录成功
	    print(p1.login("admin", "12345"))

在前端向后端传递json字符串的情况下,如果解决跨站伪造攻击防护问题?

//  function getCookie(name) {
    var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return r ? r[1] : undefined;
   }

   //调用ajax向后端发送注册请求
   $.ajax({
    url:"/api/v1.0/users", //指定提交的目标地址
    type:"post", //指定客户端的提交方式
    data:req_json, //指定前端向后端发送的请求体中的数据
    contentType:"application/json", //指定前端向后端发送json格式的数据
    dataType:"json", // 指定后端向前端回送的是json格式的数据
    headers:{
	//X-CSRFTOKEN
	"X-CSRFToken":getCookie("csrf_token")
    },
    // 当后端成功处理请求后自动回调的函数,形参resp就是后端返回给前端的js对象
    success:function (resp) {
	alert("resp="+resp+",type(resp)="+typeof(resp))
	if (resp.errno=="0"){
	    //注册成功,跳转到首页
	    location.href="/index.html"
	}else{
	    alert(resp.errmsg)
	}
    }
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值