Skip to content

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() 函数,只负责跳转,不会自动监听登录状态
  • 建议在页面关键操作前调用此函数进行登录校验
  • 可以结合页面焦点事件使用,提升用户体验

相关方法

  • isLogin - 判断是否已登录
  • login - 跳转客户端登录

版本历史

  • v1.0.0: 初始版本
  • v1.2.0: 更新以配合简化的 login() 函数