首页 > 其他分享 >装饰器中闭包之加认证功能

装饰器中闭包之加认证功能

时间:2024-07-07 19:08:06浏览次数:9  
标签:用户名 name auth 认证 器中闭 pwd func 包之加 def

类似京东商城,其实就是前端页面加后端功能的集合,所谓的后端功能其实就是各种函数。

这里所谓的认证,就是对于用户名和密码的一个校验。废话不多说,直接上需求,我们写代码搞一下。
需求:
写一段程序模拟京东商城,用装饰器来实现认证功能。

代码如下:
name_list = [
{'name':'alex','pwd':'123'},
{'name':'jack','pwd':'456'},
{'name':'rose','pwd':'789'}
]
name_dict = {'login':False}
def auth_func(func):
def warpper(args,**kwargs):
if name_dict['login'] == True:
res = func(
args,kwargs)
return res
username = input('用户名:')
pwd = input('密码:')
for li in name_list:
if li['name'] == username and li['pwd'] == pwd:
name_dict['login'] = True
res = func(*args,
kwargs)
return res
else:
print('用户名或密码错误')
return warpper

@auth_func #等同于come = auth_func(come)
def come():
print('欢迎来到京东主页')

@auth_func
def home(name):
print('欢迎%s回家' %name)

@auth_func
def shopping_car(commodity1,commodity2):
print('购物车里有%s,还有%s,牛逼吧!' %(commodity1,commodity2))

if name == 'main':
come()
home('sb')
shopping_car('黄金','美女')

输出结果:
用户名:jack
密码:456
欢迎来到京东主页
欢迎sb回家
购物车里有黄金,还有美女,牛逼吧!

上面代码的意思是如果输入的用户名和密码刚好在密码表name_list中,说明登录成功。既然登录成功进入到了京东主页,那么进入自己的页面和购物车就不需要再重复输入用户名和密码了,即调用函数home()和shopping_car()无须再输入密码。

上面这个函数就是用了装饰器实现登录功能,很牛逼吧!这才哪到哪,python牛逼的地方还多着呢,别着急,我慢慢讲给你听。
好了,今天就到这里吧!

标签:用户名,name,auth,认证,器中闭,pwd,func,包之加,def
From: https://www.cnblogs.com/kkbest/p/18285053

相关文章

  • Springboot+Shiro+Mybatis+mysql实现权限安全认证
    Shiro是Apache的一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。Shiro主要分为两个部分就是认证和授权两部分一、介绍Subject代表了当前用户的安全操作SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组......
  • Authlib,一个终极利器 Python 库专注于提供各种认证和授权解决方案
    目录01什么是Authlib?Authlib简介为什么选择Authlib?安装与配置02Authlib的基本用法实现OAuth2客户端1、创建OAuth2客户端 2、获取访问令牌3、使用访问令牌访问资源实现OAuth2服务器1、创建OAuth2服务器2、实现授权端点3、实现资源端点03Authlib......
  • HTTPS 与 JWT 认证的关系
    HTTPS(HyperTextTransferProtocolSecure)和JWT(JSONWebToken)是Web安全领域中常用的两个不同的技术,它们在一起工作以确保数据的安全传输和认证。下面是它们各自的作用及相互关系的详细说明:HTTPS定义:HTTPS是HTTP的安全版本,通过SSL/TLS(SecureSocketsLayer/Transport......
  • 翔云身份证实名认证接口返回值参数说明
    说到实名认证相信大家都不陌生,现如今,随着互联网应用的不断普及,我们生活和工作的方方面面都需要进行身份的实名认证;而企业实现实名认证的功能可以通过集成接口来实现,那么,翔云身份证实名认证接口返回值参数分贝代表什么呢?下面一起来了解一下吧!翔云身份实名认证接口返回值参......
  • PostgreSQL学习之基于时间的认证
        设计        如果要限制用户在某一天的某时间段可以登录,某时间段不可以登录,在此做了一种简单的实现,通过pg_hba.conf文件配置时间段,示例如下:#TYPEDATABASEUSERADDRESSTIMEMETHOD#"local"isforUnixdomains......
  • PostgreSQL学习之使用LDAP认证
        PostgreSQL使用LDAP认证,简单说就是将用户名和密码存储在LDAP服务器上,postgresql数据库必须有相同的用户(用户名称相同,密码可以不同),当数据库客户端登录数据库时,数据库服务器不使用本地的密码校验机制而是去请求LDAP服务器验证用户名密码是否正确,正确则登录成功,失败......
  • 手把手搞定报名亚马逊科技认证
    亚马逊云科技认证考试为我们这些技术从业者提供了提升专业技能的机会。无论选择线上还是线下考试,每种方式都有其独特的优势和挑战。选择合适的考试方式将帮助我们更好地展示自己的技术水平。以下是我对不同考试方式的优缺点介绍,以及各科目的考试代码。希望这些信息能帮助大......
  • PHP身份证实名认证接口助力技术人员告别996
    996这种工作模式,试问有多少人愿意接受?然而这种工作制度在程序员的圈子里早已成为不成文的“规定”。网络段子也有不少调侃程序员的,比如:一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?”程序员答:“加班”;C程序员看不起C++程序员,C++程序员看不起Java程序员,Jav......
  • 48、k8s-安全认证-授权管理-角色创建、用户绑定角色
    授权发生在认证成功之后、同i过认证就可以知道请求用户是谁、然后kubernetes会根据事先定义的授权策略来决定用户是否有权限访问、这个过程就称为授权每个发送到APIServer的请求都带上了用户和资源的信息:比如发送请求的用户、请求的路径、请求的动作等、授权就是根据这些信息和......
  • 47、k8s-安全认证-认证管理
    kubernetes集群安全的最关键点在于如何识别并认证客户端的身份、它提供了三种客户端身份认证方式:·HTTPBase认证:通过用户名+密码的方式认证··这种认证方式是把用户名和密码用Base64算法进行编码后的字符串放在http请求中的headerAuthorization域里发送给客户......