master
BINGWU 1 year ago
parent 7875121b51
commit 4a3f7bf5d0

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

@ -17,6 +17,7 @@ Including another URLconf
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import path
from serve.views.index import initUrls from serve.views.index import initUrls
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), 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 bson.objectid import ObjectId
from serve.middleware.handleErrorMethod import handleErrorMethod from serve.middleware.handleErrorMethod import handleErrorMethod
from serve.middleware.handleEmpty import handleEmpty from serve.middleware.handleEmpty import handleEmpty
from serve.utils.pyjwt import get_jwt_token,decode_jwt_token
collection = connectdb('user_model') collection = connectdb('user_model')
def createUser(request): def createUser(request):
result = handleErrorMethod(request.method, 'POST') result = handleErrorMethod(request.method, 'POST')
if result[0]: if result[0]:
data = json.loads(request.body) data = json.loads(request.body)
print(data) print(data)
@ -72,9 +74,35 @@ def getUser(request):
return JsonResponse(result[1]) 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 = [ user_url = [
path('user/create', createUser), path('user/create', createUser),
path('user/delete', deleteUser), path('user/delete', deleteUser),
path('user/update', updateUser), path('user/update', updateUser),
path('user/get', getUser), path('user/get', getUser),
path('user/login', loginUser),
path('user/test', testUser),
] ]

Loading…
Cancel
Save