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中获取用去信息,来执行相关操作

posted @ 2016-07-04 00:06  gxyz  阅读(4057)  评论(0编辑  收藏  举报