Files
order/web/interceptors/AuthInterceptor.py
2019-07-21 18:20:01 +08:00

61 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
from application import app
from flask import request,g,redirect
from common.models.User import ( User )
from common.libs.user.UserService import ( UserService )
from common.libs.UrlManager import ( UrlManager )
import re
@app.before_request
def before_request():
ignore_urls = app.config['IGNORE_URLS']
ignore_check_login_urls = app.config['IGNORE_CHECK_LOGIN_URLS']
path = request.path
# 如果是静态文件就不要查询用户信息了
pattern = re.compile('%s' % "|".join(ignore_check_login_urls))
if pattern.match(path):
return
user_info = check_login()
pattern = re.compile('%s' % "|".join(ignore_urls))
if pattern.match(path):
return
if not user_info:
return redirect( UrlManager.buildUrl("/user/login"))
return
'''
判断用户是否已经登录
'''
def check_login():
cookies = request.cookies
auth_cookie = cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else None
app.logger.info( auth_cookie)
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(uid=auth_info[1]).first()
except Exception:
return False
if user_info is None:
return False
if auth_info[0] != UserService.geneAuthCode( user_info ):
return False
if user_info.status != 1:
return False
return user_info