美文网首页
Python之路,装饰器模式模拟页面登录

Python之路,装饰器模式模拟页面登录

作者: Flash_6857 | 来源:发表于2018-03-11 13:01 被阅读0次

    最近看了下Python,的确是一种语义简洁,且特别适合快速开发的语言,学习了这个语言的装饰器模式,想记录下自己的一点点感想:

    虚拟业务场景: 假设有三个页面:home,finance,book三个函数,分别使用京东帐号,微信帐号,和普通帐号登录,现在三个页面已经正式上线使用,要求不修改调用代码的情况下,使用装饰器模式来为三个函数添加登录验证:

    具体的代码块如下:

    #__author: "hong liu"

    #date: 2018-03-08

    import json

    login_status =False

    # 把验证信息组装为字典

    def analy_file(properties):

    user_info = {}

    if type(properties) ==list:

    for linein properties:

    if '=' in line:

    platform,user_json = line.split('=')

    platform = platform.strip()

    user_json = json.loads(user_json.strip())

    user_info[platform] = user_json

    return user_info

    # 通过装饰器模式来实现不修改工程代码的情况下添加登录验证

    def auth(auth_type =''):

    def login(func):

    def inner(user_info):

    if login_status ==False:

    if auth_type =='jingdong':#验证类型为京东帐号

                        user_name =input('jingdong username:')

    pass_word =input('jingdong password:')

    if user_info['jingdong']['user_name'] == user_nameand user_info['jingdong']['pass_word'] == pass_word:

    func()

    else:

    print('login jingdong fail')

    if auth_type =='weixin':#验证类型为微信帐号

                        user_name =input('weixin username:')

    pass_word =input('weixin password:')

    if user_info['weixin']['user_name'] == user_nameand user_info['weixin']['pass_word'] == pass_word:

    func()

    else:

    print('login weixin fail')

    if auth_type =='':#普通帐号验证

                        user_name =input('username:')

    pass_word =input('password:')

    if user_info['customer']['user_name'] == user_nameand user_info['customer']['pass_word'] == pass_word:

    func()

    else:

    print('login fail')

    return inner

    return login

    #主页面,使用京东帐号登录

    @auth(auth_type ='jingdong')

    def home():

    print('welcome to home page')

    #财务专栏,使用微信帐号登录

    @auth(auth_type ='weixin')

    def finance():

    print('welcome to finance page')

    #书本页面,使用普通帐号登录

    @auth(auth_type ='')

    def book():

    print('welcome to book page')

    file_info = []

    # 从文件中读取用户登录验证信息

    with open('./user_info.txt','r',encoding='UTF-8')as f:

    for linein f:

    file_info.append(line.strip('\n'))

    user_info = analy_file(file_info)

    home(user_info) #最后调用home(user_info)会发现需要验证了

    相关文章

      网友评论

          本文标题:Python之路,装饰器模式模拟页面登录

          本文链接:https://www.haomeiwen.com/subject/gctwfftx.html