Flask-登录练习
基于蓝图CBV模式的登录
使用蓝图并用cbv模式完成登录功能
登录成功后跳转到首页
将session保存在liunx上的redis数据库
使用before_request验证是否是登陆用户
蓝图
from flask import Blueprint,render_template,redirect,views,request,session user = Blueprint("user",__name__) class User(views.MethodView): def get(self): return render_template("login.html") def post(self): username = request.form.get("username") password = request.form.get("password") if username == "henry" and password == "123": session["username"] = username uname = session.get("username") print(uname) return redirect("home") else: return "username or password error" user.add_url_rule("/login",endpoint=None,view_func=User.as_view(name="login"))
主程序
from flask import Flask,request,redirect,session from flask_session import Session from redis import Redis from user_login.login_blue import user app = Flask(__name__) app.register_blueprint(user) app.config["SESSION_TYPE"]="redis" app.config["SESSION_REDIS"]=Redis(host="192.168.61.138",port=6380,db=2,password="root") Session(app) @app.before_request # 相当于django的中间件 def auth(): # 白名单放行 if request.path == "/login": return None # 判断是否是登录用户 if session.get("username"): return None else: # 如果不是登录页面就会跳转到登录页面 return redirect("login") @app.route("/home") def home(): return "这是homo页面" if __name__ == '__main__': app.run()
登录演示
没有登录时访问home页面会跳转到登录页面,让用户登录;
登录成功后会跳转到home页面,登录成功后我们写入了session保持会话,我们可以直接访问登录后的所有页面;