登录注册、手机号、邮箱
This commit is contained in:
@@ -24,13 +24,45 @@ export interface AuthState {
|
||||
routesLoaded: boolean;
|
||||
}
|
||||
|
||||
// 从localStorage恢复状态的辅助函数
|
||||
// 存储工具函数
|
||||
const StorageUtil = {
|
||||
// 保存数据(根据rememberMe选择存储方式)
|
||||
setItem(key: string, value: string, rememberMe = false) {
|
||||
if (rememberMe) {
|
||||
localStorage.setItem(key, value);
|
||||
} else {
|
||||
sessionStorage.setItem(key, value);
|
||||
}
|
||||
},
|
||||
|
||||
// 获取数据(优先从localStorage,其次sessionStorage)
|
||||
getItem(key: string): string | null {
|
||||
return localStorage.getItem(key) || sessionStorage.getItem(key);
|
||||
},
|
||||
|
||||
// 删除数据(从两个存储中都删除)
|
||||
removeItem(key: string) {
|
||||
localStorage.removeItem(key);
|
||||
sessionStorage.removeItem(key);
|
||||
},
|
||||
|
||||
// 清除所有认证相关数据
|
||||
clearAuth() {
|
||||
const keys = ['token', 'loginDomain', 'menus', 'permissions', 'rememberMe'];
|
||||
keys.forEach(key => {
|
||||
localStorage.removeItem(key);
|
||||
sessionStorage.removeItem(key);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 从存储恢复状态的辅助函数
|
||||
function getStoredState(): Partial<AuthState> {
|
||||
try {
|
||||
const token = localStorage.getItem('token');
|
||||
const loginDomainStr = localStorage.getItem('loginDomain');
|
||||
const menusStr = localStorage.getItem('menus');
|
||||
const permissionsStr = localStorage.getItem('permissions');
|
||||
const token = StorageUtil.getItem('token');
|
||||
const loginDomainStr = StorageUtil.getItem('loginDomain');
|
||||
const menusStr = StorageUtil.getItem('menus');
|
||||
const permissionsStr = StorageUtil.getItem('permissions');
|
||||
|
||||
return {
|
||||
token: token || null,
|
||||
@@ -40,7 +72,7 @@ function getStoredState(): Partial<AuthState> {
|
||||
routesLoaded: false, // 路由始终需要重新加载
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('从localStorage恢复状态失败:', error);
|
||||
console.error('从存储恢复状态失败:', error);
|
||||
return {
|
||||
token: null,
|
||||
loginDomain: null,
|
||||
@@ -111,50 +143,57 @@ const authModule: Module<AuthState, any> = {
|
||||
|
||||
mutations: {
|
||||
// 设置登录信息
|
||||
SET_LOGIN_DOMAIN(state, loginDomain: LoginDomain) {
|
||||
SET_LOGIN_DOMAIN(state, payload: { loginDomain: LoginDomain; rememberMe?: boolean }) {
|
||||
const { loginDomain, rememberMe = false } = payload;
|
||||
|
||||
state.loginDomain = loginDomain;
|
||||
state.token = loginDomain.token || null;
|
||||
state.menus = loginDomain.menus || [];
|
||||
state.permissions = loginDomain.permissions || [];
|
||||
|
||||
// 持久化到localStorage
|
||||
// 持久化到存储(根据rememberMe选择localStorage或sessionStorage)
|
||||
if (state.token) {
|
||||
localStorage.setItem('token', state.token);
|
||||
StorageUtil.setItem('token', state.token, rememberMe);
|
||||
}
|
||||
if (loginDomain) {
|
||||
localStorage.setItem('loginDomain', JSON.stringify(loginDomain));
|
||||
StorageUtil.setItem('loginDomain', JSON.stringify(loginDomain), rememberMe);
|
||||
}
|
||||
if (state.menus.length > 0) {
|
||||
localStorage.setItem('menus', JSON.stringify(state.menus));
|
||||
StorageUtil.setItem('menus', JSON.stringify(state.menus), rememberMe);
|
||||
}
|
||||
if (state.permissions.length > 0) {
|
||||
localStorage.setItem('permissions', JSON.stringify(state.permissions));
|
||||
StorageUtil.setItem('permissions', JSON.stringify(state.permissions), rememberMe);
|
||||
}
|
||||
// 保存rememberMe标记
|
||||
StorageUtil.setItem('rememberMe', String(rememberMe), rememberMe);
|
||||
},
|
||||
|
||||
// 设置Token
|
||||
SET_TOKEN(state, token: string | null) {
|
||||
state.token = token;
|
||||
const rememberMe = StorageUtil.getItem('rememberMe') === 'true';
|
||||
if (token) {
|
||||
localStorage.setItem('token', token);
|
||||
StorageUtil.setItem('token', token, rememberMe);
|
||||
} else {
|
||||
localStorage.removeItem('token');
|
||||
StorageUtil.removeItem('token');
|
||||
}
|
||||
},
|
||||
|
||||
// 设置菜单
|
||||
SET_MENUS(state, menus: SysMenu[]) {
|
||||
state.menus = menus;
|
||||
const rememberMe = StorageUtil.getItem('rememberMe') === 'true';
|
||||
if (menus.length > 0) {
|
||||
localStorage.setItem('menus', JSON.stringify(menus));
|
||||
StorageUtil.setItem('menus', JSON.stringify(menus), rememberMe);
|
||||
}
|
||||
},
|
||||
|
||||
// 设置权限
|
||||
SET_PERMISSIONS(state, permissions: SysPermission[]) {
|
||||
state.permissions = permissions;
|
||||
const rememberMe = StorageUtil.getItem('rememberMe') === 'true';
|
||||
if (permissions.length > 0) {
|
||||
localStorage.setItem('permissions', JSON.stringify(permissions));
|
||||
StorageUtil.setItem('permissions', JSON.stringify(permissions), rememberMe);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -171,11 +210,8 @@ const authModule: Module<AuthState, any> = {
|
||||
state.permissions = [];
|
||||
state.routesLoaded = false;
|
||||
|
||||
// 清除localStorage
|
||||
localStorage.removeItem('token');
|
||||
localStorage.removeItem('loginDomain');
|
||||
localStorage.removeItem('menus');
|
||||
localStorage.removeItem('permissions');
|
||||
// 清除所有认证相关存储(localStorage和sessionStorage)
|
||||
StorageUtil.clearAuth();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -188,8 +224,12 @@ const authModule: Module<AuthState, any> = {
|
||||
return Promise.reject(result.message);
|
||||
}
|
||||
const loginDomain = result.data;
|
||||
// 保存登录信息
|
||||
commit('SET_LOGIN_DOMAIN', loginDomain);
|
||||
|
||||
// 保存登录信息(传递rememberMe参数)
|
||||
commit('SET_LOGIN_DOMAIN', {
|
||||
loginDomain,
|
||||
rememberMe: loginParam.rememberMe || false
|
||||
});
|
||||
|
||||
// 生成动态路由
|
||||
await dispatch('generateRoutes');
|
||||
|
||||
Reference in New Issue
Block a user