Flask login authentication

login function

@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    # POST
    user = request.form.get('user')
    pwd = request.form.get('pwd')
    if user == 'tom' and pwd == ' 123 ' : 
        the session [ ' User ' ] = User
         return the redirect ( ' / index / ' )
     the else :
         return the render_template ( ' the login.html ' , error = ' account number or password ' )

1, it is determined logic function written directly in the view (low)

@app.route('/index/')
def index():
    if session.get('user'):
        return render_template('index.html')
    return redirect('/login/')

2, the decorator (suitable, less need to log site)

def wrapper(func):
    @wraps(func)
    def inner(*args, **kwargs):
        if not session.get('user'):
            return redirect('/login/')
        ret = func(*args, **kwargs)
        return ret
    return inner
@app.route('/index/')
@wrapper
def index():
    # if session.get('user'):
    #     return render_template('index.html')
    # return redirect('/login/')
    return render_template('index.html')

3, befer_request ===> corresponds in Django process_request

# -*- encoding: utf-8 -*-
from flask import Flask, render_template, request, redirect, session
from functools import wraps
app = Flask(__name__)
app.secret_key = 'abc'


# def wrapper(func):
#     @wraps(func)
#     def inner(*args, **kwargs):
#         if not session.get('user'):
#             return redirect('/login/')
#         ret = func(*args, **kwargs)
#         return ret
#     return inner
@app.before_request
def auth():
    if request.path == '/login/':
        return None
    if session.get('user'):
        return None
    else:
        return redirect('/login/')


@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    # POST
    user = request.form.get('user')
    pwd = request.form.get('pwd')
    if user == 'tom' and pwd == '123':
        session['user'] = user
        return redirect('/index/')
    else:
        return render_template('login.html', error='账号或密码错误')


@app.route('/test/')
def test():
    return render_template('test.html')


@app.route('/index/')
def index():
    # if session.get('user'):
    #     return render_template('index.html')
    # return redirect('/login/')
    return render_template('index.html')
#


if __name__ == '__main__':
    app.run()

 

Guess you like

Origin www.cnblogs.com/wt7018/p/11599279.html