修复了id获取失败的bug,并添加了登录错误的报错
This commit is contained in:
parent
19f3d6ca10
commit
43e94434d1
@ -9,7 +9,7 @@ export const userStore = defineStore('user', () => {
|
|||||||
const refreshToken = ref('');
|
const refreshToken = ref('');
|
||||||
const role = ref('');
|
const role = ref('');
|
||||||
const username = ref('');
|
const username = ref('');
|
||||||
const userId = ref<number | null>(null);
|
const id = ref<number | null>(null);
|
||||||
|
|
||||||
// 计算属性,用于快速判断用户是否登录
|
// 计算属性,用于快速判断用户是否登录
|
||||||
const isLoggedIn = computed(() => !!accessToken.value);
|
const isLoggedIn = computed(() => !!accessToken.value);
|
||||||
@ -29,13 +29,14 @@ export const userStore = defineStore('user', () => {
|
|||||||
async function login(usernameParam: string, password: string) {
|
async function login(usernameParam: string, password: string) {
|
||||||
try {
|
try {
|
||||||
const { access_token, refresh_token } = await authService.login(usernameParam, password);
|
const { access_token, refresh_token } = await authService.login(usernameParam, password);
|
||||||
const decoded = jwtDecode<{ sub: string; role: string; username: string }>(access_token);
|
const decoded = jwtDecode<{ sub: string; role: string; username: string; id: string }>(access_token);
|
||||||
setTokens({ access_token, refresh_token });
|
setTokens({ access_token, refresh_token });
|
||||||
setRole(decoded.role);
|
setRole(decoded.role);
|
||||||
username.value = decoded.username;
|
username.value = decoded.username;
|
||||||
userId.value = parseInt(decoded.sub);
|
id.value = parseInt(decoded.id);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Login failed:', error);
|
console.error('Login failed:', error);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ export const userStore = defineStore('user', () => {
|
|||||||
refreshToken.value = '';
|
refreshToken.value = '';
|
||||||
role.value = '';
|
role.value = '';
|
||||||
username.value = '';
|
username.value = '';
|
||||||
userId.value = null;
|
id.value = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 刷新访问令牌的方法,调用 authService.refreshToken 获取新令牌并设置状态
|
// 刷新访问令牌的方法,调用 authService.refreshToken 获取新令牌并设置状态
|
||||||
@ -58,5 +59,5 @@ export const userStore = defineStore('user', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { accessToken, refreshTokenToken: refreshToken, role, username, userId, isLoggedIn, login, logout, refreshTokenMethod };
|
return { accessToken, refreshTokenToken: refreshToken, role, username, userId: id, isLoggedIn, login, logout, refreshTokenMethod };
|
||||||
});
|
});
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
import type { Ref } from 'vue'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { userStore } from '@/store/userStore'
|
import { userStore } from '@/store/userStore'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
@ -37,10 +38,13 @@ const form = ref<LoginForm>({
|
|||||||
const handleLogin = async () => {
|
const handleLogin = async () => {
|
||||||
try {
|
try {
|
||||||
const { username, password } = form.value
|
const { username, password } = form.value
|
||||||
|
if (!username || !password) {
|
||||||
|
throw new Error('用户名和密码不能为空')
|
||||||
|
}
|
||||||
await store.login(username, password)
|
await store.login(username, password)
|
||||||
router.push({ name: 'manage' })
|
router.push({ name: 'manage' })
|
||||||
} catch (error) {
|
} catch (error: any) {
|
||||||
ElMessage.error('登录失败,请检查用户名和密码')
|
ElMessage.error(error.message || '登录失败,请检查用户名和密码')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user