zoukankan      html  css  js  c++  java
  • python验证登录

    一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢

    这里我们使用装饰器来做登录验证

    网站构成

    假设我们有这样一个网站,是一个类似与博客园这种多个用户的网站,每个用户都又一个自己的管理界面,博客园内部也应该有一个管理员系统
    所以网站的用户角色可以分为:

    1. 未登录用户
    2. 登录的普通用户,就是我们
    3. 管理员用户

    首先,未登录用户只能查看别人的博客,要想评论别人的文章就需要登录,这时就要使用登录验证,来区分未登录和登录用户
    其次,登录的普通用户也不应该能够访问管理员系统,不然岂不是会乱套,这时也需要一次验证

    代码如下

    
    # coding:utf-8
    import sys
    
    user = {"name":"", "is_login":False, "is_admin":False}
    
    def login_confirm(func):
        def wrap(*args, **kwrgs):
            if user["is_login"]:
                func(*args, **kwrgs)
            else:
                print "未登录"
            return func
        return wrap
    
    def admin_confirm(func):
        def wrap(*args, **kwrgs):
            if user["is_admin"]:
                func(*args, **kwrgs)
            else:
                print "没有权限"
            return func
        return wrap
      
    def index():
        print "This page is for everyone"
    
    @login_confirm
    def usr():
        print "This is user page!"
    
    @login_confirm
    @admin_confirm
    def admin():
        print "This is admin page!"
    
    if __name__=="__main__":
        while True:
            print "(1) 访问首页 (2) 登录 (3) 用户界面 (4)管理员 (q)退出\n"
            num = raw_input("请输入对应数字:")
            if num == "q":
                sys.exit(0)
            if num == "1":
                index()
            elif num == "2":
                name = raw_input("请输入你的名字:")
                if name == "admin":
                    user["name"] = name
                    user["is_login"] = True
                    user["is_admin"] = True
                else:
                    user["name"] = name
                    user["is_login"] = True
            elif num == "3":
                usr()
            elif num == "4":
                admin()
            else:
                print "错误的选项"
    
    

    其中login_confirm装饰器用来验证登录,admin_confirm装饰器用来验证管理员权限,这里的用户信息存储在user_info这个字典里,在实际应用中,可以配合session使用,从session中获取用去信息,来执行相关操作

  • 相关阅读:
    解疑网络监控卡壳 视觉体验400ms延时
    DDD实战11 在项目中使用JWT的token 进行授权验证
    在sql语句中 inner join ,left join,right join 和on 以及where
    在.net core自带DI中服务生命周期 Transient,Scoped,Singleton
    DDD实战10 在项目中使用JWT的token
    简单使用.net core 自带的DI
    在.net core中一个简单的加密算法
    DDD实战9 经销商领域上下文
    DDD实战8_2 利用Unity依赖注入,实现接口对应实现类的可配置
    DDD实战8_1 实现对领域中连接字符串的可配置
  • 原文地址:https://www.cnblogs.com/itogo/p/5639221.html
Copyright © 2011-2022 走看看