在前端开发中,认证和授权是很常见的需求。而 Github 是一个很受欢迎的第三方账号,很多应用都需要通过 Github 登录。passport-github-scopes 就是一款基于 Passport.js 实现的 Github 认证包,它可以让你通过 Github 进行认证和授权,并且支持自定义授权范围。本文将详细介绍使用 passport-github-scopes 的方法和注意事项。
安装
使用 npm 安装 passport-github-scopes:
npm install passport-github-scopes
基本用法
使用 passport-github-scopes 的基本步骤如下:
- 引入所需模块
const passport = require('passport'); const GitHubStrategy = require('passport-github2').Strategy; const GitHubScopesStrategy = require('passport-github-scopes');
- 配置认证策略
-- -------------------- ---- ------- ---------------- ---------------------- --------- ----------------- ------------- --------------------- ------------ --------------------------------------------- ------ -------- ------- -- --------------------- ------------- -------- ----- - ------------------- --------- ---------- -- -------- ----- ----- - ------ --------- ------ --- ----
- 使用认证策略
-- -------------------- ---- ------- ----------------------- ------------------------------- - ------ -------------- ---- -------------------------------- ------------------------------- - ---------------- -------- --- ------------- ---- - -- ---------- --------------- -------- ----- ------------------ ---
这样,用户就可以通过访问 /auth/github 来进行 Github 认证,并且可以访问 user 和 repo。在通过认证之后,用户的权限可以保存在 session 中,供后续使用。
自定义授权范围
除了默认的授权范围外,passport-github-scopes 还支持自定义授权范围。可以通过 scope 参数来设定授权范围。例如:
-- -------------------- ---- ------- ---------------- ---------------------- --------- ----------------- ------------- --------------------- ------------ --------------------------------------------- ------ -------- ------- ------- ---------------- -- --------------------- ------------- -------- ----- - ------------------- --------- ---------- -- -------- ----- ----- - ------ --------- ------ --- ----
注意事项
- passport-github-scopes 的依赖包 passport 和 passport-github2 需要事先引入,可以使用 npm 安装。
- 在使用 Github 登录时,需要事先在 Github 上注册 OAuth 应用,并获得 clientID 和 clientSecret。在实际开发中,这些信息通常会保存在环境变量中。
- 在使用自定义授权范围时,需要注意所添加的权限是否被 Github 所支持。
示例代码
下面是一个完整的示例代码:
-- -------------------- ---- ------- -- ------ ----- ------- - ------------------- ----- ------- - --------------------------- ----- -------- - -------------------- ----- -------------- - ------------------------------------- ----- -------------------- - ---------------------------------- ----- --- - ---------- ----------------- ------- --------- ----- ------- ------ ------------------ ---- ---- ------------------------------- ---------------------------- ---------------- ---------------------- --------- ----------------- ------------- --------------------- ------------ --------------------------------------------- ------ -------- ------- -- --------------------- ------------- -------- ----- - ------------------- --------- ---------- -- -------- ----- ----- - ------ --------- ------ --- ---- ------------------------------------- ----- - ---------- ------ --- --------------------------------------- ----- - ---------- ------ --- ----------------------- ------------------------------- - ------ -------------- ---- -------------------------------- ------------------------------- - ---------------- -------- --- ------------- ---- - -- ---------- --------------- -------- ----- ------------------ --- -----------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572c681e8991b448e8e9b