前言
在前端开发中,我们经常需要实现用户登录、注册、忘记密码等功能,这些功能的实现需要涉及一系列的后台逻辑和前端交互。为了方便开发,社区中涌现了很多优秀的工具包,npm 包 just-login-core
就是其中的一款。
本文将介绍 just-login-core
的基本用法和深入内容,以及如何在实际项目中使用它。
什么是 just-login-core
just-login-core
是一个 npm 包,它是一个用于实现用户登录注册等功能的核心库。它提供了一些基础的方法,可以帮助我们快速地实现这些功能。
在使用 just-login-core
之前,你需要了解一些下面的术语:
- loginID: 用户的唯一标识符,就像用户名一样
- jwtToken: 用于验证和识别用户的 JSON Web Token
- deviceID: 记录用户登录设备的标识符
just-login-core
也提供了一些默认的数据库模型,可以帮助我们快速地实现用户数据存储逻辑。但是,如果你想使用自己的数据库模型,也可以轻易地集成到 just-login-core
中。
安装和基础使用
你可以使用 npm 安装 just-login-core
:
--- ------- ---------------
接下来,你需要创建一个新的 justLoginCore
实例:
----- ------------- - -------------------------- ----- ------------- - --- --------------- -- --- --
配置项
JustLoginCore
有以下配置项:
- db: 用于存储用户数据的数据库实例,你可以使用内置的 sqlite3 或者其他 ORM 库
- jwtSecret: 用于验证和识别用户的 JWT Token 的密钥
- loginIDRegex: 用于限制 loginID 的正则表达式
- allowInsecurePasswords: 是否允许使用弱密码
- passwordHasher: 对密码进行加密的函数
- createEmail: 用于发送验证邮件的函数
- verifyEmail: 用于验证邮件的函数
例如,你可以这样进行配置:
----- ------- - ---------------------------- ----- -- - --- ---------------------------- ----- ------------- - --- --------------- --- ---------- --------- ------------- ---------------------- ----------------------- ------ --------------- ---------- -- -------------------------------------------------------------- ------------ ------- --------- -- - -- ------ -- ------------ ------- ------ -- - -- ---- - --
API
just-login-core
只有几个基础方法:
register(loginID, password, email = null)
: 注册新用户login(loginID, password, deviceID = null)
: 用户登录logout(loginID, deviceID)
: 用户注销登录startResetPassword(loginID)
: 重置密码请求performResetPassword(loginID, newPassword, secretToken)
: 执行密码重置
例如,你可以这样进行调用:
---------------------------------- ----------- ---------------------------- -- - ------------------- -- ------------------------------- ----------- --------------------------- -- - --------------------------- ------------- -- -------------------------------- ------------------- -- - ------------------- -- ---------------------------------------------------- -- - ----------------------- -- ---------------------------------------------- -------------- ---------------------- -- - --------------------- --
深入内容
在深入使用 just-login-core
之前,我们需要了解一些术语和基本操作。
login 和 jwtToken
login
操作会返回一个 jwtToken
,它是使用 JWT 技术生成的一个字符串,用于识别和验证用户身份。在每次请求服务端时,我们需要将这个 token 附带到请求头中,以便服务端可以识别用户身份。
用法示例:
------------------------------- ----------- --------------------------- -- - --------------------------- ------------- --
保持 token 已登录状态
一般情况下,我们需要在登录后保持 token 的已登录状态,这里提供一个工具函数:
----- ------------- - -------------------------- ----- - -------------- - - --------------------------------------- ----- ------------- - --- --------------- -- --- -- -- ------- -------- --------------- ---- ----- - ----- -------- - -------------- -- ----------- - ------ -------------------------- - ------------------------ ------ - -------------------
deviceID
deviceID
用于识别用户使用的设备,通常在用户登录时需要进行传递。
- 如果用户在同一台设备上登录多次,则使用相同的 deviceID
- 如果用户在不同设备上登录,则使用新的 deviceID,原有的 deviceID 将自动过期
例如,你可以这样进行调用:
------------------------------- ----------- --------------------------- -- - --------------------------- ------------- --
邮件验证
在每次用户注册时,通常需要进行邮箱验证,以确保用户提交的是有效的邮箱地址。在 just-login-core
中,邮箱验证的几个接口分别是:
startEmailVerification(loginID)
: 发送验证邮件endEmailVerification(loginID, token)
: 验证邮件
例如,你可以这样进行调用:
-------------------------------------------------------- -- - ----------------------- -- ---------------------------------------------- ---------------------- -- - --------------------- --
项目实践
在实际前端项目中,我们可以将 just-login-core
集成到后端服务作为接口,以方便前端调用。这里以 Express 框架为例:
----- ------- - ------------------ ----- ---------- - ---------------------- ----- --- - ----------------------- ----- - -------------- -------------- - - -------------------------- ----- --- - --------- ----- ------------- - --- --------------- -- --- -- -------------------------- -- ---- ------------------ ----- ----- ---- -- - ----- - -------- --------- -------- - - -------- --- - ----- -------- - ----- ---------------------------- --------- --------- ------------------------ ---------- ---- --------- ----- -- -- - ----- ------- - ---------------------- ------ ------------- -- - -- -- ------------- ------------ ----- ---- -- - ----- -------- - -------------- -- ----------- - ------ -------------------------- - --- - ----- ------- - -------------------- --------- ---------- ----- ------- -- - ----- ------- - -------------------------- - -- ---------------- -- -- - ------------------- -- ------------ --
我们可以使用 axios
来模拟登录:
----- ----- - ---------------- ----------------------------------------- - -------- ----------- --------- ----------- --------- ---------- ------------- -- - ----- - ---- ---- - - -------- --------------------------- -------- --
如上代码,我们成功进行了登录,并返回了签名后的 JSON Web Token。
最后,在浏览器中,我们需要在每次请求服务端时附带这个 token:
----- -------- - -------------------------------- ----------------------------------- - -------- - ---- -------- - ------------- -- - --------------------- --
完整代码实例:
----- ----- - ---------------- ----------------------------------------- - -------- ----------- --------- ----------- --------- ---------- ------------- -- - ----- - ---- ---- - - -------- --------------------------- -------- -------------------------------- ---- -- ----- -------- - -------------------------------- ----------------------------------- - -------- - ---- -------- - ------------- -- - --------------------- --
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/91808