75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
from application import app
|
|
from flask import request, g, make_response, redirect
|
|
from common.models.user import User
|
|
from common.lib.UserService import UserService
|
|
from common.lib.Helper import ops_render
|
|
from common.lib.UrlManager import UrlManager
|
|
|
|
|
|
@app.before_request
|
|
def before_request():
|
|
# 当用户未登录时,在列表中的请求将被重定向到登录界面
|
|
filter_list = [
|
|
"/",
|
|
"/commodity/add",
|
|
"/commodity/del",
|
|
"/commodity/buy",
|
|
"/commodity/send",
|
|
"/commodity/trans",
|
|
"/commodity/warehouse",
|
|
"/commodity/distribution",
|
|
"/commodity/sale"
|
|
]
|
|
app.logger.info("--------before_request:%s--------" % (request.path))
|
|
|
|
user_info = check_login()
|
|
g.current_user = None
|
|
app.logger.info("user_info:%s" % user_info)
|
|
if user_info:
|
|
g.current_user = user_info
|
|
app.logger.info("current_user:%s" % g.current_user)
|
|
if g.current_user is None:
|
|
# 用户未登录
|
|
app.logger.info("current_user is null,进行重定向")
|
|
if request.path in filter_list:
|
|
# 拦截普通请求
|
|
response = make_response(redirect(UrlManager.build_url("/member/login")))
|
|
response.delete_cookie(app.config["AUTH_COOKIE_NAME"])
|
|
return response
|
|
|
|
return
|
|
|
|
|
|
@app.after_request
|
|
def after_request(response):
|
|
app.logger.info("--------after_request--------")
|
|
return response
|
|
|
|
|
|
'''
|
|
判断用户是否登录
|
|
'''
|
|
|
|
|
|
def check_login():
|
|
cookies = request.cookies
|
|
cookie_name = app.config["AUTH_COOKIE_NAME"]
|
|
auth_cookie = cookies[cookie_name] if cookie_name in cookies else None
|
|
if auth_cookie is None:
|
|
return False
|
|
auth_info = auth_cookie.split("#")
|
|
if len(auth_info) != 2:
|
|
return False
|
|
try:
|
|
user_info = User.query.filter_by(id=auth_info[1]).first()
|
|
except Exception:
|
|
return False
|
|
|
|
if user_info is None:
|
|
return False
|
|
|
|
if auth_info[0] != UserService.gene_auth_code(user_info):
|
|
return False
|
|
|
|
return user_info
|