前言
在开发网站时,用户认证是不可避免的问题。而认证的实现也需要经过很多繁琐的过程。npm 包 passport-tosan 就是一种极其方便的解决方案,它可以帮助你在 Express 应用中简单快捷地添加用户认证功能。本文将详细介绍如何使用 passport-tosan。
安装
首先,我们需要在项目中安装该 npm 包。
npm install passport-tosan
同时,我们还需要安装一些基本的 npm 包:express、passport、passport-local、body-parser、cookie-parser 等。这些包可以通过 npm 在项目中直接安装。
npm install express passport passport-local body-parser cookie-parser
配置
在引入 passport-tosan 之前,我们需要先完成一些准备工作。具体来说,我们需要在项目中建立数据库和定义用户模型。在这里,我们以 MongoDB 和 Mongoose 为例。
在数据库和用户模型建立完毕后,我们需要在项目中引入上述 npm 包,并对它们进行配置。如下所示:
-- -------------------- ---- ------- -- -- --- - ----- ------- - ------------------- ----- -------- - -------------------- ----- ------------- - ----------------------------------- ----- ---------- - ----------------------- ----- ------------ - ------------------------- ----- -------- - -------------------- -- -- ----- --- - ---------- ------------------------------------------------------- ------------------------------- --------- ----- ---- ------------------------ ------------------------------- ----------------------------
以上配置仅仅是模板代码,其中要根据实际情况更改。比如这里的数据库地址是本地地址,而你可能需要用线上地址。
用户模型
至此,我们已经进行了基本的配置。下一步,我们需要定义用户模型。在这里,我们可以定义一个基本的用户模型,包括以下几个字段:用户名、密码、电子邮箱、创建时间和更新时间。
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ------------------------- -- ------ ----- ---------- - ----------------- --------- - ----- ------- ------- ----- --------- ----- -- ------ - ----- ------- ------- ----- --------- ----- -- --------- - ----- ------- --------- ----- -- ---------- - ----- ----- -------- --------- -- ---------- - ----- ----- -------- --------- -- --- -- ------------- ---------------------- -------- ------ - ----- ---- - ----- -- ------------------------------ - ------ ------- - ------------------ ----- ----- -- - -- ----- - ------ ---------- - -------------------------- ----- ----- ----- ----- -- - -- ----- - ------ ---------- - ------------- - ----- ------- --- --- --- -- ------- ---------------------------------- - -------- ------------------- --------- - --------------------------------- -------------- ----- -------- -- - -- ----- - ------ -------------- - -------------- --------- --- -- -------------- - ---------------------- ------------
Passport 配置
接下来,我们需要对 passport 进行配置,并定义策略。在这里,我们使用 LocalStrategy 来进行身份验证。LocalStrategy 是一个寻常的策略,它用于用户名和密码进行身份验证。Passport 会从表单获取这两个数据并检查其合法性。如果认证成功,则 Passport 将一个令牌封装到回调函数中,供任何需要进行用户访问控制的端点使用。
-- -------------------- ---- ------- -- -- ------------- ----- ---- - ------------------ ------------- --- --------------- -------------- ---------- -- ---------- --------- ----- -- - -------------- --------- -------- -- ----- ----- -- - -- ----- - ------ ---------- - -- ------- - ------ ---------- ------- - ------------------------------ ----- -------- -- - -- ----- - ------ ---------- - -- ---------- - ------ ---------- ------- - ------ ---------- ------ --- --- -- -- ----------------------------- ----- -- - ---------- --------- --- ----------------------------- ----- -- - ----------------- ----- ----- -- - --------- ------ --- ---
对路由进行保护
在所有身份验证合法的请求中,Passport 会将当前的用户数据附加到 req.user 对象中。要对路由进行保护,我们可以添加一个中间件,检查用户是否处于认证状态。如果没有认证,则重定向到登录页。
function isAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next(); } res.redirect('/login'); }
添加用户注册路由
到了这一步,我们已经成功配置了 Passport 和定义了用户模型以及对路由进行了保护。下一步,我们需要添加注册和登录路由。在这里,我们以注册路由为例:
-- -------------------- ---- ------- --------------------- ----- ---- ----- -- - ----- - --------- --------- ----- - - --------- ----- ---- - --- ------ --------- --------- ------ ------ --------- --------- --- --------------- -- - -- ----- - ------ ---------- - ------------------ --- ---
添加用户登录路由
最终,我们可以为用户添加登录路由,并将其保护。
-- -------------------- ---- ------- --------- --------- ------------------------------ - ---------------- ---- ---------------- --------- -- -- ------------ ---------------- ----- ---- ----- -- - --------------- ----------------------- --- ----------------- ----- ---- ----- -- - --------------- -------------------- ----------- --------------- -------- --------------- --------------- --------- -------------------------------------- ---
结尾
passport-tosan 是一款相当流行的 npm 包,它可以帮助我们快速实现用户认证功能。当然,还有其他的认证 npm 包,不能因为某个 npm 包质量好就选择它,而应该根据实际情况选择最适合的 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566aa81e8991b448e2e41