master
BINGWU 11 months ago
parent 7875121b51
commit 4a3f7bf5d0

@ -74,6 +74,8 @@ TEMPLATES = [
WSGI_APPLICATION = 'serve.wsgi.application'
JWT_SECRET_KEY = 'secret_key' # 应该是一个随机的复杂字符串用于签名JWT
JWT_ALGORITHM = 'HS256' # JWT使用的算法
# Database
# https://docs.djangoproject.com/en/5.0/ref/settings/#databases

@ -17,6 +17,7 @@ Including another URLconf
from django.contrib import admin
from django.urls import path
from serve.views.index import initUrls
urlpatterns = [
path('admin/', admin.site.urls),
]

@ -1,7 +0,0 @@
import jwt
def decode_jwt_token(encoded_jwt):
# 关闭过期时间检验
de_code = jwt.decode(encoded_jwt, "JWT_SECRET_KEY", algorithms=['HS256'])
return de_code

@ -1,14 +0,0 @@
def get_jwt_token(user_name, role_data='default'):
"""
生成jwt-token
:param unit_name:
:param role_data:
:return:
"""
payload = {
'exp': datetime.utcnow() + timedelta(seconds=3600), # 单位秒
'iat': datetime.utcnow(),
'data': {'username': user_name, 'role_data': role_data}
}
encoded_jwt = jwt.encode(payload, "JWT_SECRET_KEY", algorithm='HS256')
return str(encoded_jwt, encoding='utf8')

@ -0,0 +1,33 @@
from datetime import datetime, timedelta
from serve.settings import JWT_SECRET_KEY, JWT_ALGORITHM
from jwt import ExpiredSignatureError
import jwt
def get_jwt_token(user_name, role_data='default'):
"""
生成jwt-token
:param unit_name:
:param role_data:
:return:
"""
payload = {
'exp': datetime.utcnow() + timedelta(seconds=10), # 单位秒
'iat': datetime.utcnow(),
'data': {'username': user_name, 'role_data': role_data}
}
encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm=JWT_ALGORITHM)
return str(encoded_jwt)
def decode_jwt_token(encoded_jwt):
try:
# 关闭过期时间检验
decoded_token = jwt.decode(encoded_jwt, JWT_SECRET_KEY, algorithms=['HS256'])
return decoded_token
except ExpiredSignatureError:
# JWT 令牌已过期
return {'error': 'JWT token has expired'}
except jwt.InvalidTokenError:
# 其他 JWT 令牌验证错误
return {'error': 'Invalid JWT token'}

@ -5,12 +5,14 @@ from serve.utils.connectdb import connectdb
from bson.objectid import ObjectId
from serve.middleware.handleErrorMethod import handleErrorMethod
from serve.middleware.handleEmpty import handleEmpty
from serve.utils.pyjwt import get_jwt_token,decode_jwt_token
collection = connectdb('user_model')
def createUser(request):
result = handleErrorMethod(request.method, 'POST')
if result[0]:
data = json.loads(request.body)
print(data)
@ -72,9 +74,35 @@ def getUser(request):
return JsonResponse(result[1])
def loginUser(request):
result = handleErrorMethod(request.method, 'POST')
token = get_jwt_token('abc')
if result[0]:
return JsonResponse({"code": 2000, "msg": "登陆成功", "token": token})
else:
return JsonResponse(result[1])
def testUser(request):
result = handleErrorMethod(request.method, 'POST')
data = decode_jwt_token(
"eyJhbGciOiJIUzI1NiIsInR5cCsI6IkpXVCJ9.eyJleHAiOjE3MTE1MDIzMDcsImlhdCI6MTcxMTUwMjI5NywiZGF0YSI6eyJ1c2VybmFtZSI6ImFiYyIsInJvbGVfZGF0YSI6ImRlZmF1bHQifX0.KYpzmz0RWqyAMI3P7UN2I_TdrZoNaXafrFcZuSajsqQ")
print(data)
if result[0]:
return JsonResponse(data)
else:
return JsonResponse(result[1])
user_url = [
path('user/create', createUser),
path('user/delete', deleteUser),
path('user/update', updateUser),
path('user/get', getUser),
path('user/login', loginUser),
path('user/test', testUser),
]

Loading…
Cancel
Save