码迷,mamicode.com
首页 > 其他好文 > 详细

flask中的登录验证 装饰器版 befor_request版

时间:2018-10-25 17:54:44      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:not   index   word   flask   rect   imp   port   UNC   def   

一,第一种登录验证

  

@app01.route(/login,methods=["GET","POST"])
def login():
    if request.method == "GET":
        return render_template(login.html)

    username = request.form.get("username")
    password = request.form.get("password")
    if username == "chen" and password == "123":
        session[user] = username

        return redirect(/index)
    return render_template(login.html,error="用户名或密码错误")
    # return render_template(‘login.html‘,**{"error":"用户名或密码错误"})

@app01.route(/index)
def index():
    user = session.get("user")
    print(user)
    if not user:
        return redirect(/login)

    return render_template(index.html)

二 第二种登录验证---装饰器版

  

import functools
def check_login(func):
    @functools.wraps(func)
    def inner(*args,**kwargs):
        if session.get(user):
            return func(*args,**kwargs)
        else:
            return redirect(/login)

    return inner

@app.route(/login,methods=["GET","POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    username = request.form.get("username")
    password = request.form.get("password")
    if username == "chen" and password == "123":
        session["user"] = username
        return redirect(/index)

    return render_template("login.html")

@app.route(/index)
@check_login
def index():
    user = session.get("user")
    if not user:
        return redirect(/login)
    return render_template("index.html",sut_dict = STUDENT_DICT)

@app.route(/detail/<int:nid>)
@check_login
def detail(nid):
    info = STUDENT_DICT[nid]

    return render_template("detail.html",info=info)


@app.route(/delete/<int:nid>)
@check_login
def delete(nid):
    del STUDENT_DICT[nid]
    return redirect(url_for(index))

三  第三种登录验证 before_request

  

@app.before_request
def check_login():
    if request.path == /login:
        return None
    if session.get(user):
        return None
    return redirect(/login)


@app.route(/login,methods=["GET","POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    username = request.form.get("username")
    password = request.form.get("password")
    if username == "chen" and password == "123":
        session["user"] = username
        return redirect(/index)

    return render_template("login.html")

@app.route(/index)
def index():
    user = session.get("user")
    if not user:
        return redirect(/login)
    return render_template("index.html",sut_dict = STUDENT_DICT)


@app.route(/detail/<int:nid>)
def detail(nid):
    info = STUDENT_DICT[nid]

    return render_template("detail.html",info=info)


@app.route(/delete/<int:nid>)
def delete(nid):
    del STUDENT_DICT[nid]
    return redirect(url_for(index))

 

flask中的登录验证 装饰器版 befor_request版

标签:not   index   word   flask   rect   imp   port   UNC   def   

原文地址:https://www.cnblogs.com/chvv/p/9851230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!