npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

qlfy-ecological-login

v1.2.5

Published

山东生态统一登录Vue3组件 - 提供完整的OAuth2统一认证解决方案

Readme

qlfy-ecological-login

山东生态统一登录Vue3组件 - 提供完整的OAuth2统一认证解决方案

简介

qlfy-ecological-login 是一个专为山东生态系统设计的Vue3统一登录组件,基于OAuth2协议实现,提供了完整的用户认证流程管理。该组件支持自动token管理、权限获取、登录状态监听等功能,可以快速集成到Vue3项目中。

特性

  • 🔐 OAuth2认证 - 基于标准OAuth2协议的统一登录
  • 🚀 Vue3支持 - 完全基于Vue3 Composition API开发
  • 📦 TypeScript - 完整的TypeScript类型支持
  • 🔄 自动Token管理 - 自动处理token存储和校验
  • 👥 权限管理 - 获取和管理用户权限信息
  • 🎯 灵活配置 - 支持多种配置模式和自定义参数
  • 安全可靠 - 内置安全机制和错误处理
  • 📝 日志调试 - 支持开启日志和调试模式

安装

npm install qlfy-ecological-login

快速开始

1. 全局注册

import { createApp } from 'vue'
import App from './App.vue'
import qlfyEcologicalLogin from 'qlfy-ecological-login'

const app = createApp(App)
app.use(qlfyEcologicalLogin)
app.mount('#app')

2. 组件使用

<template>
  <div>
    <!-- 统一登录组件 -->
    <qlfy-ecological-login
      :client-id="clientId"
      :client-secret="clientSecret"
      login-page-base-address="https://sdocen.weathermate.cn:15029/auth"
      login-service-base-address="http://10.76.34.53:48080"
      :use-router="router"
      :show-log="true"
      @login-success="handleLoginSuccess"
      @login-fail="handleLoginFail"
      @logging-in="handleLoggingIn"
    />
    
    <!-- 你的应用内容 -->
    <router-view />
  </div>
</template>

<script setup>
import { useRouter } from 'vue-router'

const router = useRouter()

// 配置参数
const clientId = 'your-client-id'
const clientSecret = 'your-client-secret'

// 事件处理
const handleLoginSuccess = (loginInfo) => {
  console.log('登录成功:', loginInfo)
}

const handleLoginFail = (error) => {
  console.log('登录失败:', error)
}

const handleLoggingIn = (token) => {
  console.log('正在登录:', token)
}
</script>

API 文档

组件属性 (Props)

| 属性名 | 类型 | 必填 | 默认值 | 说明 | |--------|------|------|--------|------| | clientId | string | ✅ | - | 应用ID,由平台提供 | | clientSecret | string | ✅ | - | 应用密钥,由平台提供 | | loginPageBaseAddress | string | ✅ | - | 统一登录页面的基础地址 | | loginServiceBaseAddress | string | ✅ | - | 登录服务的基础地址 | | useRouter | Router | ✅ | - | Vue Router实例 | | forceMode | boolean | ❌ | true | 强制登录模式 | | clientName | string | ❌ | - | 应用名称 | | token | string | ❌ | - | 外部传入的token | | isEnabled | boolean | ❌ | true | 是否启用组件,支持动态控制 | | redirectPath | string | ❌ | '' | 认证成功后的重定向路径 | | tenantId | number \| string | ❌ | 168 | 租户ID | | showLog | boolean | ❌ | false | 是否显示执行日志 | | openDebugger | boolean | ❌ | false | 是否开启调试模式 |

组件事件 (Events)

| 事件名 | 参数 | 说明 | |--------|------|------| | loggingIn | (code: String, loginInfo?: any) | 正在登录时触发 | | loginSuccess | (loginInfo: { [x: string]: any } \| null) | 登录成功时触发 | | loginFail | (failInfo: any) | 登录失败时触发 | | tokenRefresh | (loginInfo: { [x: string]: any } \| null) | Token刷新时触发 |

事件触发机制详解

1. loggingIn 事件

  • 触发时机: 组件初始化加载或路由变化时检测到token
  • 触发条件: 可从插件参数、url或缓存中获取到token
  • 参数说明: 当前获取到的token值
  • 使用场景: 显示登录加载状态

2. loginSuccess 事件

  • 触发时机: 插件首次完成完整登录流程后,包括token验证和用户权限获取
  • 触发条件:
    • token验证通过
    • 用户权限信息获取成功
  • 参数说明: 包含用户权限和配置信息的完整对象
  • 使用场景: 保存用户信息到全局状态,初始化应用权限

3. loginFail 事件

  • 触发时机: 登录流程中任何步骤失败时
  • 触发条件:
    • Token验证失败
    • 用户权限获取失败
    • 网络请求异常
    • 在非强制模式下无有效token时
  • 参数说明: 包含错误信息的对象
  • 使用场景: 显示错误提示,记录错误日志

组件方法 (Exposed Methods)

通过组件ref可以调用以下方法:

// 获取组件实例
const loginRef = ref()

// 退出登录
await loginRef.value.logout()

// 获取当前token
const token = await loginRef.value.getToken()

// 获取登录信息
const loginInfo = await loginRef.value.getLoginInfo()

// 跳转到统一登录页面
await loginRef.value.goLogin()

全局工具函数

组件还提供了一系列全局工具函数,可以在应用的任何地方使用:

import { 
  logout, 
  goLogin, 
  getToken, 
  getRefreshToken, 
  getUserPermission 
} from 'qlfy-ecological-login'

// 退出登录
// isGoLog: 是否跳转到登录页,默认为true
// success: 成功回调
// error: 失败回调
logout(true, 
  (res) => console.log('退出成功', res),
  (err) => console.log('退出失败', err)
)

// 跳转到登录页
goLogin()

// 获取当前token (Promise)
getToken().then(token => {
  console.log('Token:', token)
})

// 获取刷新token (Promise)
getRefreshToken().then(refreshToken => {
  console.log('RefreshToken:', refreshToken)
})

// 获取用户权限信息 (Promise)
getUserPermission().then(permissions => {
  console.log('Permissions:', permissions)
})

登录流程

组件实现了完整的OAuth2登录流程:

  1. 初始化检查 - 检查组件是否启用
  2. Token优先级 - 按优先级检查token来源:
    • 外部传入的token(最高优先级)
    • URL参数中的token(从登录页返回)
    • 本地缓存的token
  3. Token验证 - 调用后端接口验证token有效性
  4. 用户信息获取 - 获取用户权限和配置信息
  5. 状态管理 - 管理登录状态和token生命周期
  6. 路由拦截 - 根据登录状态和强制模式进行路由拦截

注意事项

  1. 路由依赖 - 组件依赖Vue Router,请确保正确传入router实例,且路由模式(Hash/History)会自动检测。
  2. 数据存储 - 组件内置了IndexedDB和LocalStorage的数据存储管理器,自动处理跨域和存储限制。
  3. 安全性 - 请妥善保管clientId和clientSecret。
  4. 跨域问题 - 请确保登录服务支持跨域请求或配置代理。

许可证

MIT License