Appearance
checkLogin
智能登录校验,未登录时自动跳转登录页面。
语法
ts
checkLogin(cb?: () => void): boolean参数
cb(Function, 可选): 登录成功后的回调函数
返回值
boolean- 如果已登录返回true,否则返回false
描述
checkLogin 函数会检查用户的登录状态:
- 如果用户已登录,执行回调函数(如果提供)并返回
true - 如果用户未登录且非内网环境,自动调用
login()跳转到登录页面并返回false - 如果用户未登录且为内网环境,不触发跳转,直接返回
false
示例
基本使用
typescript
import { checkLogin } from '@fu/matrix';
// 检查登录状态
if (checkLogin()) {
console.log('用户已登录,可以继续操作');
} else {
console.log('用户未登录,已跳转到登录页面');
}带回调函数的使用
typescript
import { checkLogin } from '@fu/matrix';
// 检查登录状态并执行回调
checkLogin(() => {
console.log('用户已登录,执行后续操作');
// 执行需要登录的业务逻辑
performUserAction();
});在业务操作前检查
typescript
import { checkLogin } from '@fu/matrix';
function handleUserAction() {
// 在执行需要登录的操作前检查
const isLoggedIn = checkLogin(() => {
// 用户已登录,执行操作
console.log('开始执行用户操作');
executeUserAction();
});
if (!isLoggedIn) {
console.log('用户未登录,请先登录');
// 可以显示登录提示或其他UI反馈
}
}页面初始化时检查
typescript
import { checkLogin } from '@fu/matrix';
// 页面加载时检查登录状态
document.addEventListener('DOMContentLoaded', () => {
checkLogin(() => {
console.log('用户已登录,初始化用户相关功能');
initUserFeatures();
});
});
function initUserFeatures() {
// 初始化需要登录的功能
console.log('加载用户数据...');
}结合页面焦点事件
typescript
import { checkLogin } from '@fu/matrix';
// 页面重新获得焦点时检查登录状态
window.addEventListener('focus', () => {
checkLogin(() => {
console.log('页面重新获得焦点,用户仍处于登录状态');
// 可以刷新数据或更新UI
refreshUserData();
});
});
function refreshUserData() {
console.log('刷新用户数据');
}接口调用前检查
typescript
import { checkLogin } from '@fu/matrix';
async function fetchUserData() {
// 在调用需要登录的API前检查
const isLoggedIn = checkLogin();
if (isLoggedIn) {
try {
const response = await fetch('/api/user/profile');
const userData = await response.json();
console.log('用户数据:', userData);
} catch (error) {
console.error('获取用户数据失败:', error);
}
} else {
console.log('用户未登录,无法获取数据');
}
}内网环境处理
在内网环境(localhost)中,checkLogin 不会自动跳转到登录页面:
typescript
import { checkLogin } from '@fu/matrix';
// 内网环境示例
function handleIntranetCheck() {
const isLoggedIn = checkLogin(() => {
console.log('内网环境,用户已登录');
});
if (!isLoggedIn) {
console.log('内网环境,用户未登录但不会自动跳转');
// 可以显示内网专用的登录提示
showIntranetLoginPrompt();
}
}
function showIntranetLoginPrompt() {
console.log('请在内网环境中手动登录');
}环境支持
- ✅ 浏览器环境
- ✅ Node.js 环境(依赖相关函数的实现)
注意事项
- 该函数会自动识别内网环境,内网环境下不会触发登录跳转
- 登录跳转使用
login()函数,只负责跳转,不会自动监听登录状态 - 建议在页面关键操作前调用此函数进行登录校验
- 可以结合页面焦点事件使用,提升用户体验
相关方法
版本历史
- v1.0.0: 初始版本
- v1.2.0: 更新以配合简化的
login()函数