[Javascript] 身份認證: Passport.js

Passport.js
https://github.com/jaredhanson/passport

Passport.js web
http://www.passportjs.org/

passport.js 的認證流程(authenticate flow)
https://zybuluo.com/FunC/note/1088513

Node JS + Express JS + Passport JS 做一個登入系統 & 多個帳號綁定的範例
http://justcodeforfun.blogspot.com/2016/03/node-js-express-js-passport-js.html

Nodejs 利用passport完成本地認證 示例一
https://blog.csdn.net/choelea/article/details/75033213

[Day 19] Node JS 如何用Passport.js 進行認證? let me show you!
https://ithelp.ithome.com.tw/articles/10193017?sc=iThelpR

[Node] Passport 學習筆記(Learn to Use Passport JS)
https://pjchender.github.io/2017/09/26/node-passport-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98%EF%BC%88learn-to-use-passport-js%EF%BC%89/

使用 Passport 實作 Nodejs 應用程式驗證機制
https://andyyou.github.io/2017/04/11/express-passport/

Passport.js 之 Hello 你好嗎 ~
http://marklin-blog.logdown.com/posts/2089246-passport-js-hello-hello

系統的講解 - SSO單點登錄
https://segmentfault.com/a/1190000019142622

6 JavaScript User Authentication Libraries for 2019
https://blog.bitsrc.io/6-javascript-user-authentication-libraries-for-2019-6c7c45fbe458

Passport.js 是用來實現 authenticate/authorize 的中介軟體。passport.js 的三個核心部分:
1.引用模組,調用中介軟體 passport.initialize() 初始化 passport.js 的配置。如果需要持久化的登陸session,還需要調用中介軟體 passport.session() 。中介軟體的順序應為:express-session -> passport.initialize -> passport.session
2.配置 passport。需要配置的主要有兩個部分
2.1身份認證策略(如驗證用戶名和密碼)
2.2session。需要自行配置 passport.serializeUser() 和 3.passport.deserializeUser() (作用見下文)
指定需要使用 passport.authenticate() 的路由

Passport 的身份認證(authentication)流程
以在路由 /login 上進行認證為例 :
1.用戶 POST 一個登陸表單,導致中介軟體 passport.authenticate 的執行
2.調用相應的認證策略,這裡因為是用 username 和 password 進行登陸,所以使用 local 策略(由npm packagepassport-local 提供)
3.Passport 獲取 req.body.username 和 req.body.password ,用作驗證策略的參數(需要提前配置 body-parser )
4.從資料庫取出相應的 user 物件,驗證密碼
5.如果驗證通過,passport 內部自動調用 req.login() ,用於建立登陸session。
6.req.login() 會調用我們先前定義的 passport.serializeUser() ,該方法決定將 user 實例的哪些資料存入 session,一般選擇存 user.id。passport.serializeUser() 將設置 req.session.passpot.user = {/* serialized user object */}
7.然後將 user 實例掛載到 req.user 上
8.之後執行常規的 requestHandler


#Javascript, Passport.js, authenticate, authorize, 使用者, 認證, 登入

留言