npm 包 @passport-next/passport-oauth2-client-public 使用教程

阅读时长 4 分钟读完

简介

@passport-next/passport-oauth2-client-public 是一个基于 Passport.js 的认证策略,用于 OAuth2 客户端公共模式(public client mode)的身份认证授权,支持浏览器端和 Node.js 服务器端的开发环境。

使用该包可以方便快捷地实现用户身份认证及 API 授权,对于大多数前端应用来说,是必备的包之一。

安装

在使用 npm 安装 @passport-next/passport-oauth2-client-public 前,需要先安装 Passport.js:

接着安装 @passport-next/passport-oauth2-client-public:

用法

此处以使用 GitHub OAuth2 API 为示例,以下是具体步骤:

1. 注册认证应用并获取客户端 ID 和密钥

在 GitHub 开发者站点注册认证应用,获取对应的客户端 ID 和密钥。

2. Passport.js 中注册认证策略

-- -------------------- ---- -------
----- -------- - -------------------
----- -------------------------- - ----------------------------------------------------------------

---------------- ----------------------------
  --------- -----------------
  ----------------- -------------------------------------------
  --------- ----------------------------------------------
  ------ ---------------
  ------------ --------------------------------------------
-- -------- ------------- ------------- -------- --- -
  -- ------ ----------- -----------------
---

说明:

  • clientID:客户端 ID,必填
  • authorizationURL:认证授权 URL,必填
  • tokenURL:获取 access_token 接口 URL,必填
  • scope:请求访问权限,可选
  • callbackURL:回调 URL,必填
  • verify:验证回调函数,可选

3. 创建认证路由,并初始化 Passport.js

-- -------------------- ---- -------
----- ------- - ------------------
----- -------- - -------------------
----- --- - ---------

----------------------- ----------------------------------------------

-------------------------------- --------------------------------------------- -
  ---------------- --------
--- -------- ----- ---- -
  -- --------
--

---------------- -------- -- -
  ------------------- ------- -- -----------------------
--

说明:

  • /auth/github:认证路由,passport.authenticate 第一个参数为刚刚注册的策略名
  • /auth/github/callback:认证回调路由,如果认证成功,则跳转到此 URL。

4. 创建 API 接口,验证认证信息

结语

通过以上步骤,我们就可以使用 @passport-next/passport-oauth2-client-public 快速实现用户身份认证及 API 授权。

该策略可以适用于大多数 OAuth2 认证接口的使用场景,是前端开发中必不可少的工具之一。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672683660cf7123b365de

纠错
反馈