🎨 优化登陆验证逻辑
This commit is contained in:
@@ -57,6 +57,7 @@ func Routers() *gin.Engine {
|
||||
|
||||
systemRouter := router.RouterGroupApp.System
|
||||
exampleRouter := router.RouterGroupApp.Example
|
||||
appRouter := router.RouterGroupApp.App // 前台应用路由
|
||||
// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
|
||||
// VUE_APP_BASE_API = /
|
||||
// VUE_APP_BASE_PATH = http://localhost
|
||||
@@ -67,9 +68,9 @@ func Routers() *gin.Engine {
|
||||
|
||||
Router.StaticFS(global.GVA_CONFIG.Local.StorePath, justFilesFilesystem{http.Dir(global.GVA_CONFIG.Local.StorePath)}) // Router.Use(middleware.LoadTls()) // 如果需要使用https 请打开此中间件 然后前往 core/server.go 将启动模式 更变为 Router.RunTLS("端口","你的cre/pem文件","你的key文件")
|
||||
// 跨域,如需跨域可以打开下面的注释
|
||||
// Router.Use(middleware.Cors()) // 直接放行全部跨域请求
|
||||
Router.Use(middleware.Cors()) // 直接放行全部跨域请求
|
||||
//Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求
|
||||
// global.GVA_LOG.Info("use middleware cors")
|
||||
global.GVA_LOG.Info("use middleware cors")
|
||||
docs.SwaggerInfo.BasePath = global.GVA_CONFIG.System.RouterPrefix
|
||||
Router.GET(global.GVA_CONFIG.System.RouterPrefix+"/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
global.GVA_LOG.Info("register swagger handler")
|
||||
@@ -117,6 +118,18 @@ func Routers() *gin.Engine {
|
||||
exampleRouter.InitAttachmentCategoryRouterRouter(PrivateGroup) // 文件上传下载分类
|
||||
|
||||
}
|
||||
// 前台应用路由(新增)
|
||||
{
|
||||
appGroup := PublicGroup.Group("app") // 统一使用 /app 前缀
|
||||
appRouter.InitAuthRouter(appGroup) // 认证路由:/app/auth/* 和 /app/user/*
|
||||
appRouter.InitCharacterRouter(appGroup) // 角色卡路由:/app/character/*
|
||||
appRouter.InitConversationRouter(appGroup) // 对话路由:/app/conversation/*
|
||||
appRouter.InitAIConfigRouter(appGroup) // AI配置路由:/app/ai-config/*
|
||||
appRouter.InitPresetRouter(appGroup) // 预设路由:/app/preset/*
|
||||
appRouter.InitUploadRouter(appGroup) // 上传路由:/app/upload/*
|
||||
appRouter.InitWorldbookRouter(appGroup) // 世界书路由:/app/worldbook/*
|
||||
appRouter.InitRegexScriptRouter(appGroup) // 正则脚本路由:/app/regex/*
|
||||
}
|
||||
|
||||
//插件路由安装
|
||||
InstallPlugin(PrivateGroup, PublicGroup, Router)
|
||||
|
||||
@@ -1 +1 @@
|
||||
VITE_API_BASE_URL=http://localhost:8888
|
||||
VITE_API_BASE_URL=http://192.168.100.160:8888
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
import apiClient from './client'
|
||||
|
||||
// 通用响应结构
|
||||
export interface ApiResponse<T> {
|
||||
code: number
|
||||
data: T
|
||||
msg: string
|
||||
}
|
||||
|
||||
// 类型定义
|
||||
export interface RegisterRequest {
|
||||
username: string
|
||||
@@ -61,12 +68,12 @@ export const authApi = {
|
||||
},
|
||||
|
||||
// 用户登录
|
||||
login: (data: LoginRequest): Promise<{ data: LoginResponse }> => {
|
||||
login: (data: LoginRequest): Promise<ApiResponse<LoginResponse>> => {
|
||||
return apiClient.post('/app/auth/login', data)
|
||||
},
|
||||
|
||||
// 刷新 Token
|
||||
refreshToken: (refreshToken: string): Promise<{ data: LoginResponse }> => {
|
||||
refreshToken: (refreshToken: string): Promise<ApiResponse<LoginResponse>> => {
|
||||
return apiClient.post('/app/auth/refresh', { refreshToken })
|
||||
},
|
||||
|
||||
@@ -76,7 +83,7 @@ export const authApi = {
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
getUserInfo: (): Promise<{ data: User }> => {
|
||||
getUserInfo: (): Promise<ApiResponse<User>> => {
|
||||
return apiClient.get('/app/auth/userinfo')
|
||||
},
|
||||
|
||||
|
||||
@@ -18,6 +18,12 @@ export default function LoginPage() {
|
||||
|
||||
try {
|
||||
const response = await authApi.login({ username, password })
|
||||
|
||||
// 检查业务 code,只有 code === 0 才视为登录成功
|
||||
if (!response || response.code !== 0 || !response.data) {
|
||||
throw new Error(response?.msg || '用户名或密码错误')
|
||||
}
|
||||
|
||||
const { token, refreshToken, user } = response.data
|
||||
|
||||
localStorage.setItem('token', token)
|
||||
@@ -26,7 +32,8 @@ export default function LoginPage() {
|
||||
|
||||
navigate('/profile')
|
||||
} catch (err: any) {
|
||||
setError(err || '登录失败,请检查用户名和密码')
|
||||
const message = err?.message || err || '登录失败,请检查用户名和密码'
|
||||
setError(message)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user