码迷,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
迷上了代码!