一,第一种登录验证
@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):
next_url = request.path #获取登录之前的页面路径
print("=====",next_url)
if session.get('user'):
return func(*args,**kwargs)
else:
return redirect(url_for('login',next=next_url))
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
print("====")
print(request.args.get('next'))
print("====")
next_url = request.args.get('next')
print(request.full_path)
return redirect(next_url) #跳转到登录之前的页面
return render_template("login.html")
@app.route('/logout')
def logout():
# 删除所有当前请求相关的session
session.pop("user")
return redirect(url_for('login'))
@app.route('/index')
@check_login
def index():
print(request.full_path)
print(request.path)
print(request.url)
print(request.url_root)
print(request.url_rule)
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'))