装饰器2_根据认证来源判断用户和计算登录时间

import time

def timmer(func):
    def wrapper(*args,**kwargs):
        print("----->from timmer_wrapper")
        start_time = time.time()
        reg = func(*args,**kwargs)
        stop_time = time.time()
        run_time = stop_time - start_time
        print(‘run time is %s‘ % run_time)
        return reg
    return  wrapper

login_user={‘user‘:None,‘status‘:False}
def auth(driver = ‘file‘):
    def auth2(func):
        def wrapper(*args,**kwargs):
            print("---->from auth_wrapper")
            if driver == ‘file‘:
                if login_user[‘user‘] and login_user[‘status‘]:
                    reg = func(*args,**kwargs)
                    return reg
                else:
                    name = input("输入姓名:")
                    password = input("输入密码")
                    if name == ‘wangkc‘ and password == ‘123123‘:
                        login_user[‘user‘] = name
                        login_user[‘status‘] = True
                        reg = func(*args,**kwargs)
                        return reg
                    else:
                        print("账号或密码错误")
            elif driver == ‘ldap‘:
                pass
            elif driver == ‘MySQL‘:
                pass
            else:
                print("==========>未知的认证来源")
        return wrapper
    return auth2

@auth()
@timmer
def index():
    time.sleep(2)
    print(‘hello world‘)

index()

  

时间: 2024-08-10 11:09:19

装饰器2_根据认证来源判断用户和计算登录时间的相关文章

Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interceptor连在一起组成了Interceptor栈.拦截器是AOP面向切面编程的一种实现,具有热插拔的效应. 3:Struts2拦截器,每个拦截器类只有一个对象实例,即采用了单利模式.所有引用这个拦截器的action都共享着一拦截器类的实例. 拦截器和过滤器的区别 1:拦截器和过滤器的概念非常类似 2:

通过Cache简单判断用户是否已经登录。

private void Login_Click(object sender, System.EventArgs e)  {    // 作为唯一标识的Key,应该是唯一的,这可根据需要自己设定规则.    // 做为测试,这里用用户名和密码的组合来做标识:也不进行其它的错误检查. // 生成Key    string sKey = UserName.Text + "_" + PassWord.Text;    // 得到Cache中的给定Key的值    string sUser =

装饰器做权限认证

#!/usr/bin/env python #_*_coding:utf-8_*_ from django.shortcuts import render,HttpResponse allow_list = ['admin'] def cron_allow(request,**kwargs): if request.user.username in allow_list: return True else: return False def check_cron_permission(fun):

如何解决每次向后台发起请求时判断用户是否处于登录状态?

事件起因: 小x向我反应用户在我开发的系统中,在其中一个功能上待了很长时间,当用户跳转到其他界面上时,突然就掉线了. 他告诉我应当在用户每次向后台索取数据的时候进行用户登录状态的检验. 用户的登录状态其实是个比较繁琐的过程.按照业务的要求,当用户点击登录界面的保存密码按钮时,在本地的cookie进行长达七天的保存.当用户没有点击保存密码的时候,主要依靠session来进行保存. session与cookie: 这两者之间的关系,网上有太多内容介绍了.简单来说:session放在服务器端.当浏览器

powershell小脚本--批量添加用户属性----导出登录时间

需求1:某公司所有员工少了MAIL属性,需要批量添加.例如,用户chenyy  添加邮件属性[email protected] 先导出(只导出名字)备用: Get-ADUser -Filter * -Properties * | select name | Export-Csv c:\test.csv 用where条件可以过滤系统账号 Get-ADUser -Filter * -Properties * |where {$_.UserPrincipalName -ne $null} | sele

装饰器实现用户验证登录

在实现用户验证的登录的时候可以使用装饰器工厂产生装饰器,让装饰器得到参数,从而判断登录类型,并验证用户登录条件,代码实现如下: def login_type(type): def Outer(F): def inner(): if type == 'QQ': name = input('请输入用户名:') psw = input('请输入密码:') if name == '汪凡' and psw == '198765': print('登陆成功!') return F() else: print

django中的认证登陆与用户的创建

---恢复内容开始--- from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate()   提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的.当我们

百万年薪python之路 -- 装饰器

装饰器 1.1 开放封闭原则 开放封闭原则具体定义是这样: 1.对扩展是开放的 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新功能. 2.对修改是封闭的 因为我们写的一个函数,很有可能已经交付给其他人使用了,如果这个时候我们对函数内部进行修改,或者修改了函数的调用方式,很有可能影响其他已经在使用该函数的用户. 定义:在不改变原被装饰的函数的源代码以及调用方式下,为其添加额外的功能. 实现真正的开放封闭原则:装饰器. 运用闭

Day 19 函数之闭包、装饰器

一.什么是装饰器 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 二.装饰器遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 三.高阶函数 高阶函数总结 1.函数接收的参数是一个函数名 作用:在不修改函数源代码的前提下,为函数添加新功能, 不足:会改变函数的调用方式 2.函数的返回值是一个函数名 作用:不修改函数的调用方式 不足:不能添加新功能 其.程序: work: #! /