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 🙏

© 2024 – Pkg Stats / Ryan Hefner

sso-login

v1.0.9

Published

SSO登录组件

Downloads

27

Readme

SSO-login 组件

前端对接 SSO 的通用组件

使用

下载 npm 包

npm i --save sso-login

在 bsy.json 中登记

{
  "options": {
    "esModule": [
      "sso-login"
    ]
  }
}

在代码中使用

import {withLogin} from 'sso-login'

// 在定义您的 根业务组件 时,在其 前面加上装饰器 withLogin,并传递参数 baseUrl
@withLogin(baseUrl)
export class App extends React.Component {
  // xxxxxxxxx
}

// 如果需要传递别的参数,如下操作
@withLogin(baseUrl,{needDefaultAnimation:true})
export class App extends React.Component {
  // xxxxxxxxx
}

开放属性

| 参数 | 是否必填 | 说明 | 类型 | 默认值 | -------- | ----------:| -----: | :----: | :----: | | apiDomain | 必填 | 接口请求地址 | string | - | animation | 非必填| 自定义的加载动画 | dom节点 | - | onLogin | 非必填| 在获取到用户信息后的特殊处理 | [{code:xxx,function:()=>{}}] | - | storeData | 非必填| 在获取到用户信息后的特殊处理 | 见下方 | - | inValidateTokenCode | 非必填| 用户自定义的token无效的code | number | 1001 | inValidateViewCode | 非必填| 用户自定义的view接口异常的code | number | 605 | needReload | 非必填| 是否需要reload,项目中存在 SL过早实例化请求对象 的问题的,这一项需要传true | boolean | false | needDefaultAnimation | 非必填 | 是否需要内置的loading动画 | boolean | false | needCheckTokenValidity | 非必填 | 是否需要在页面刷新的时候验证token的有效性 | boolean | true

// storeData 的示例
function (userInfo) {
    Object.keys(userInfo).forEach(k => {
      const newValue = JSON.stringify(userInfo[k])
      window.localStorage.setItem(k, newValue)
    })
  }

静态方法

logout

登出

import { logout } from 'sso-login'
logout(apiDomain)

handleTokenInvalid

token失效时

import { handleTokenInvalid } from 'sso-login'
handleTokenInvalid(apiDomain)

更新日志

发布周期

  • 修订版本号:每周末会进行日常 bugfix 更新。(如果有紧急的 bugfix,则任何时候都可发布)

  • 次版本号:每月发布一个带有新特性的向下兼容的版本。

  • 主版本号:含有破坏性更新和新特性,不在发布周期内。

0.0.11

2018.04.20

  • 🌟 第一个稳定版本

0.1.0

2018.04.26

  • 🐞 在调用 '/account/user/login' 接口重新获取用户信息前清除localStroage,修复token过期后死循环的bug

0.1.1

2018.05.03

  • 🌟 开场动画可以自定义

0.2.0

2018.05.04

  • 🌟 记录token失效前的浏览器地址
  • 🌟 提供静态子组件 ContainerLayout 和 CheckPermission
  • 🌟 提供静态方法 logout 和 onTokenInvalid

0.2.1

2018.05.04

  • 🌟 新增全屏操作按钮

0.2.2

2018.05.04

  • 💄 记录在 localStorage 的原路由地址在使用后清除

0.2.3

2018.05.04

  • 🐞 修复刷新后总是呈现 localStorage 的原路由的bug

0.2.4

2018.05.07

  • 🌟 展开一个新的父级菜单后,收起当前的父级菜单

0.2.5

2018.05.07

  • 💄 还原token失效前的浏览器地址放在登录组件中做

0.2.6

2018.05.07

  • 🌟 浏览器标题根据菜单动态显示

0.2.8

2018.05.08

  • 🐞 尴尬,因为文件名大小写没有成功提交到git连升两个小版本

0.2.9

2018.05.11

  • 💄 重写 loading 中 div 组件标签,避免与业务中的ID重名

0.2.10

2018.05.11

  • 💄 加了页脚,逼格杠杠的

0.2.11

2018.05.11

  • 💄 页脚可以选择是否需要
  • 🌟 新增三种菜单模式:sider+header;sider;header

0.2.12

2018.05.14

  • 💄 经过深思熟虑,sso登录组件中只记录token失效前的地址,跳转由平台自己实现,也可以使用sso提供的静态菜单渲染组件(里面有做跳转)
  • 💄 去掉onTokenInvalid静态方法的location参数,更方便,更友好

0.2.13

2018.05.17

  • 💄 样式兼容只有appName没有logo图标的情况

0.2.14

2018.06.08

  • 🐞 修复logout函数中变量引用不正确的bug

0.2.16

2018.06.08

  • 🌟 为验证token是否有效的接口增加自定义状态码的功能

0.2.20

2018.07.02

  • 🌟 添加storeData配置项:可以自己定义如何存储sso给的用户信息

0.2.21

2018.07.03

  • 🌟 添加 needCheckTokenValidity 配置项:可以配置是否需要在刷新页面时调用 validate 接口

1.0.0

2018.08.07

  • 🌟 改为装饰器模式,onTokenInvalid 改为 handleTokenInvalid
    • 这是一次不兼容改动,因为在维护 sso-login 组件的过程中我发现,它是一个功能型组件,并不渲染任何实际的内容,只是在渲染实际的业务代码之前为其接入 SSO 鉴权服务并获取用户信息,所以改为 高阶组件 的形式,与容器组件区分开来。

1.0.1

2018.08.20

  • 🌟 增加inValidateViewCode属性,支持用户自定义view接口异常情况

1.0.2

2018.09.10

  • 🐞 修复 needCheckTokenValidity 变量引用来源错误,导致validate接口没有调用的bug

1.0.3

2018.09.29

  • 💄 优化代码

1.0.4

2018.10.10

  • 🐞 修复刷新页面检测到没有 token 后直接显示登录失败的bug

1.0.5

2018.10.15

  • 🌟 !!不兼容改动:去掉了 className 和 style 两个属性 - 这是为了让 sso-login 组件更符合一个功能型组件的标准(不渲染任何实际的内容,也不去影响实际业务代码的渲染)
  • 🌟 对用户无感知,仅为内部代码优化
    • 优化内容一:不论 SSO 登录是成功还是失败,都正常渲染业务代码,并在控制台输出了 SSO 登录的结果,便于用户感知 SSO 登录是否成功
    • 优化内容二:加入 componentDidCatch 来捕获业务代码的错误

1.0.7

2018.10.10

  • 🐞 修复一个引用错误(1.0.6之前不可用)