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中獲取用去信息,來執行相關操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM