这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
上一篇文章中,我们搭建了项目的基本结构和封装了一些工具类的文件,并写了一个注册接口
详细请看这篇文章:第一篇文章
登录接口实现
graph TD
登录接口 --> 判断账号是否存在 --> 加密前端传入的密码进行数据库匹配 --> 返回true/false --> ture/颁发一个token用于登录凭证
实现基本的登录接口
1 创建auth.router.js文件,并创建对应的路由
2. 创建
verfLogin中间件,用来判断数据是否为合法
在之前的注册中,写过一个方法,是用于查询数据库中用户名是否存在的,在这里我们可以使用它
将用户传入的密码进行md5加密,然后判断两者是否一致来判断密码是否一致,不一致我们就手动抛出异常,然后在我们的App文件中的error-handle.js来进行错位处理,将处理完后的数据保存到ctx.user中,传入到下一个中间件中
3. 当前一个中间件执行无误后,最后执行我们的登录操作,在登录的时候,我们需要给它颁发一个令牌,叫
token,用于我们之后的各种权限验证
4. 颁发token令牌,我们这里使用的库是jsonwebtoken npm install jsonwebtokn ,我们采用的是非对称加密方式
5. 生成私钥和公钥
openssl 进入交互
生成私钥
genrsa -out private.key 1024
生成公钥
rsa -in private.key -pubout -out public.key
5. 将私钥和公钥读取处理,并保存到公共变量中,这里的变量需要写在后面,因为写在前面会被覆盖
6. 使用我们创建的私钥来颁发
token,过期的时间设置为24h,并将登录成功用户的id, name, token返回
7. 测试登录接口