Browse Source

perf: 优化登录模块service层及异常处理

master
insistence 11 months ago
parent
commit
0737adb389
  1. 31
      ruoyi-fastapi-backend/module_admin/controller/login_controller.py
  2. 14
      ruoyi-fastapi-backend/module_admin/service/login_service.py

31
ruoyi-fastapi-backend/module_admin/controller/login_controller.py

@ -25,11 +25,7 @@ async def login(request: Request, form_data: CustomOAuth2PasswordRequestForm = D
loginInfo=form_data.login_info, loginInfo=form_data.login_info,
captchaEnabled=captcha_enabled captchaEnabled=captcha_enabled
) )
try:
result = await LoginService.authenticate_user(request, query_db, user) result = await LoginService.authenticate_user(request, query_db, user)
except LoginException as e:
return ResponseUtil.failure(msg=e.message)
try:
access_token_expires = timedelta(minutes=JwtConfig.jwt_expire_minutes) access_token_expires = timedelta(minutes=JwtConfig.jwt_expire_minutes)
session_id = str(uuid.uuid4()) session_id = str(uuid.uuid4())
access_token = await LoginService.create_access_token( access_token = await LoginService.create_access_token(
@ -60,45 +56,29 @@ async def login(request: Request, form_data: CustomOAuth2PasswordRequestForm = D
msg='登录成功', msg='登录成功',
dict_content={'token': access_token} dict_content={'token': access_token}
) )
except Exception as e:
logger.exception(e)
return ResponseUtil.error(msg=str(e))
@loginController.get("/getInfo", response_model=CurrentUserModel) @loginController.get("/getInfo", response_model=CurrentUserModel)
async def get_login_user_info(request: Request, current_user: CurrentUserModel = Depends(LoginService.get_current_user)): async def get_login_user_info(request: Request, current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
try:
logger.info('获取成功') logger.info('获取成功')
return ResponseUtil.success(model_content=current_user) return ResponseUtil.success(model_content=current_user)
except Exception as e:
logger.exception(e)
return ResponseUtil.error(msg=str(e))
@loginController.get("/getRouters") @loginController.get("/getRouters")
async def get_login_user_routers(request: Request, current_user: CurrentUserModel = Depends(LoginService.get_current_user), query_db: AsyncSession = Depends(get_db)): async def get_login_user_routers(request: Request, current_user: CurrentUserModel = Depends(LoginService.get_current_user), query_db: AsyncSession = Depends(get_db)):
try:
logger.info('获取成功') logger.info('获取成功')
user_routers = await LoginService.get_current_user_routers(current_user.user.user_id, query_db) user_routers = await LoginService.get_current_user_routers(current_user.user.user_id, query_db)
return ResponseUtil.success(data=user_routers) return ResponseUtil.success(data=user_routers)
except Exception as e:
logger.exception(e)
return ResponseUtil.error(msg=str(e))
@loginController.post("/register", response_model=CrudResponseModel) @loginController.post("/register", response_model=CrudResponseModel)
async def register_user(request: Request, user_register: UserRegister, query_db: AsyncSession = Depends(get_db)): async def register_user(request: Request, user_register: UserRegister, query_db: AsyncSession = Depends(get_db)):
try:
user_register_result = await LoginService.register_user_services(request, query_db, user_register) user_register_result = await LoginService.register_user_services(request, query_db, user_register)
if user_register_result.is_success:
logger.info(user_register_result.message) logger.info(user_register_result.message)
return ResponseUtil.success(data=user_register_result, msg=user_register_result.message) return ResponseUtil.success(data=user_register_result, msg=user_register_result.message)
else:
logger.warning(user_register_result.message)
return ResponseUtil.failure(msg=user_register_result.message)
except Exception as e:
logger.exception(e)
return ResponseUtil.error(msg=str(e))
# @loginController.post("/getSmsCode", response_model=SmsCode) # @loginController.post("/getSmsCode", response_model=SmsCode)
@ -133,12 +113,9 @@ async def register_user(request: Request, user_register: UserRegister, query_db:
@loginController.post("/logout") @loginController.post("/logout")
async def logout(request: Request, token: Optional[str] = Depends(oauth2_scheme)): async def logout(request: Request, token: Optional[str] = Depends(oauth2_scheme)):
try:
payload = jwt.decode(token, JwtConfig.jwt_secret_key, algorithms=[JwtConfig.jwt_algorithm], options={'verify_exp': False}) payload = jwt.decode(token, JwtConfig.jwt_secret_key, algorithms=[JwtConfig.jwt_algorithm], options={'verify_exp': False})
session_id: str = payload.get("session_id") session_id: str = payload.get("session_id")
await LoginService.logout_services(request, session_id) await LoginService.logout_services(request, session_id)
logger.info('退出成功') logger.info('退出成功')
return ResponseUtil.success(msg="退出成功") return ResponseUtil.success(msg="退出成功")
except Exception as e:
logger.exception(e)
return ResponseUtil.error(msg=str(e))

14
ruoyi-fastapi-backend/module_admin/service/login_service.py

@ -9,7 +9,7 @@ from module_admin.service.user_service import *
from module_admin.entity.vo.login_vo import * from module_admin.entity.vo.login_vo import *
from module_admin.entity.vo.common_vo import CrudResponseModel from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.dao.login_dao import * from module_admin.dao.login_dao import *
from exceptions.exception import LoginException, AuthException from exceptions.exception import LoginException, AuthException, ServiceException
from config.constant import CommonConstant, MenuConstant from config.constant import CommonConstant, MenuConstant
from config.env import AppConfig, JwtConfig, RedisInitKeyConfig from config.env import AppConfig, JwtConfig, RedisInitKeyConfig
from config.get_db import get_db from config.get_db import get_db
@ -344,11 +344,9 @@ class LoginService:
captcha_value = await request.app.state.redis.get( captcha_value = await request.app.state.redis.get(
f"{RedisInitKeyConfig.CAPTCHA_CODES.get('key')}:{user_register.uuid}") f"{RedisInitKeyConfig.CAPTCHA_CODES.get('key')}:{user_register.uuid}")
if not captcha_value: if not captcha_value:
logger.warning("验证码已失效") raise ServiceException(message='验证码已失效')
return CrudResponseModel(is_success=False, message='验证码已失效')
elif user_register.code != str(captcha_value): elif user_register.code != str(captcha_value):
logger.warning("验证码错误") raise ServiceException(message='验证码错误')
return CrudResponseModel(is_success=False, message='验证码错误')
add_user = AddUserModel( add_user = AddUserModel(
userName=user_register.username, userName=user_register.username,
nickName=user_register.username, nickName=user_register.username,
@ -357,11 +355,9 @@ class LoginService:
result = await UserService.add_user_services(query_db, add_user) result = await UserService.add_user_services(query_db, add_user)
return result return result
else: else:
result = dict(is_success=False, message='注册程序已关闭,禁止注册') raise ServiceException(message='注册程序已关闭,禁止注册')
else: else:
result = dict(is_success=False, message='两次输入的密码不一致') raise ServiceException(message='两次输入的密码不一致')
return CrudResponseModel(**result)
@classmethod @classmethod
async def get_sms_code_services(cls, request: Request, query_db: AsyncSession, user: ResetUserModel): async def get_sms_code_services(cls, request: Request, query_db: AsyncSession, user: ResetUserModel):

Loading…
Cancel
Save