简介
@passport-next/passport-oauth2-client-public 是一个基于 Passport.js 的认证策略,用于 OAuth2 客户端公共模式(public client mode)的身份认证授权,支持浏览器端和 Node.js 服务器端的开发环境。
使用该包可以方便快捷地实现用户身份认证及 API 授权,对于大多数前端应用来说,是必备的包之一。
安装
在使用 npm 安装 @passport-next/passport-oauth2-client-public 前,需要先安装 Passport.js:
npm install passport
接着安装 @passport-next/passport-oauth2-client-public:
npm install @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 接口,验证认证信息
app.get('/api/profile', function (req, res) { // 验证 accessToken 或 req.user 中的信息,并返回用户信息 })
结语
通过以上步骤,我们就可以使用 @passport-next/passport-oauth2-client-public 快速实现用户身份认证及 API 授权。
该策略可以适用于大多数 OAuth2 认证接口的使用场景,是前端开发中必不可少的工具之一。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672683660cf7123b365de