You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.3 KiB
105 lines
3.3 KiB
6 months ago
|
#coding:utf-8
|
||
|
__author__ = "ila"
|
||
|
|
||
|
from django.utils.deprecation import MiddlewareMixin
|
||
|
from django.http import JsonResponse
|
||
|
from django.apps import apps
|
||
|
|
||
|
from util.auth import Auth
|
||
|
from util.codes import *
|
||
|
from dj2.settings import dbName as schemaName
|
||
|
|
||
|
|
||
|
class Xauth(MiddlewareMixin):
|
||
|
def process_request(self,request):
|
||
|
fullPath = request.get_full_path()
|
||
|
print("fullPath===============>", fullPath)
|
||
|
|
||
|
# token=request.META.get("HTTP_TOKEN")
|
||
|
# print("token=============>",token)
|
||
|
# request.session['token']=token
|
||
|
|
||
|
|
||
|
if request.method == 'GET':
|
||
|
|
||
|
filterList=[
|
||
|
"/index",
|
||
|
"/favicon.ico",
|
||
|
"/login",
|
||
|
"/register",
|
||
|
'.js',
|
||
|
".css",
|
||
|
".jpg",
|
||
|
".jpeg",
|
||
|
".png",
|
||
|
".gif",
|
||
|
".mp4",
|
||
|
'mp3',
|
||
|
".ttf",
|
||
|
".wotf",
|
||
|
".woff",
|
||
|
".woff2",
|
||
|
".otf",
|
||
|
".eot",
|
||
|
".svg",
|
||
|
".csv",
|
||
|
".xls",
|
||
|
".xlsx",
|
||
|
".doc",
|
||
|
".docx",
|
||
|
".ppt",
|
||
|
".pptx",
|
||
|
".html",
|
||
|
".htm",
|
||
|
"detail",
|
||
|
"/forum/flist",
|
||
|
"/forum/list",
|
||
|
"/admin",
|
||
|
"/xadmin",
|
||
|
"/file/download",
|
||
|
"/{}/remind/".format(schemaName),
|
||
|
"/{}/option/".format(schemaName),
|
||
|
"resetPass",
|
||
|
]
|
||
|
|
||
|
allModels = apps.get_app_config('main').get_models()
|
||
|
for m in allModels:
|
||
|
try:
|
||
|
foreEndList=m.__foreEndList__
|
||
|
except:
|
||
|
foreEndList=None
|
||
|
if foreEndList is not None and foreEndList != "前要登":
|
||
|
filterList.append("/{}/sendemail".format(m.__tablename__))
|
||
|
filterList.append("/{}/list".format(m.__tablename__))
|
||
|
|
||
|
auth = True
|
||
|
|
||
|
if fullPath=='/':
|
||
|
pass
|
||
|
else:
|
||
|
for i in filterList:
|
||
|
if i in fullPath:
|
||
|
auth=False
|
||
|
if auth==True:
|
||
|
result = Auth.identify(Auth, request)
|
||
|
|
||
|
if result.get('code') != normal_code:
|
||
|
pass
|
||
|
#print('jwt auth success')
|
||
|
#return JsonResponse(result)
|
||
|
elif request.method == 'POST':
|
||
|
post_list = [
|
||
|
'/{}/defaultuser/register'.format(schemaName),
|
||
|
'/{}/defaultuser/login'.format(schemaName),
|
||
|
'/{}/users/register'.format(schemaName),
|
||
|
'/{}/users/login'.format(schemaName),
|
||
|
"/{}/examusers/login".format(schemaName),
|
||
|
"/{}/examusers/register".format(schemaName),
|
||
|
] # 免认证list
|
||
|
if fullPath not in post_list and "register" not in fullPath and "login" not in fullPath: # 注册时不检测token。
|
||
|
result = Auth.identify(Auth, request)
|
||
|
|
||
|
if result.get('code') != normal_code:
|
||
|
print('jwt auth fail')
|
||
|
return JsonResponse(result)
|