栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

HTTP动词的Mongoose / Express授权

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HTTP动词的Mongoose / Express授权

忘记了Everyauth。这个图书馆太夸张了,恕我直言。实际上,实现身份验证非常简单,请遵循以下架构:

  1. 用户通过
    username
    password
    到达服务器;
  2. 服务器获取
    username
    password
    在DB中检查是否有该用户
    password
    。如果没有用户,则返回错误;
  3. 我们有一个用户,现在使用Express的内置会话机制。调用
    req.session.regenerate
    和在回调中执行
    req.session.userID = user.id
    。Express会自动将cookie发送给用户;
  4. 创建一个中间件(必须 其他任何请求处理程序 之前启动 ),该中间件基本上在数据库中搜索
    req.session.userID
    。如果找到一个,则将其存储在中
    req
    ;即
    req.user = user
  5. 在视图中,您只需检查是否
    req.user
    设置了变量。如果是,则我们已通过身份验证。大功告成!

广告1 +
2)为了确保身份验证的安全性,您应该使用一些加密技术(和/或HTTPS)。例如,密码应分为两部分保存在数据库中:

salt
hash
salt
是随机生成的(在注册时)和
hash= hash_it(pwd, salt)
,其中
hash_it
是一些哈希算法(例如:MD5或SHA256)。

现在可以通过几个步骤进行客户端身份验证(仅当您可以使用Javascript时):

  1. 服务器将随机发送
    new_salt
    到登录页面(或在Javascript中生成一个,无需隐藏生成算法);
  2. 用户发送AJAX请求
    give me salt for user X
    ,服务器以
    salt
    存储在DB中的响应(
    salt
    公共);
  3. 对响应进行哈希
    pwd
    处理
    salt
    ,然后再对结果进行哈希处理
    new_salt
    ,将其存储在变量中
    hpwd
    ;
  4. 客户端发送
    username
    hpwd
    new_salt
    给服务器;
  5. 服务器
    pwd
    从DB 获取for
    username
    pwd
    使用
    new_salt
    进行哈希处理并将结果与​​进行比较
    hpwd
    (注意:您不存储
    new_salt
    )。

这种方法非常好,因为每次登录(从外部角度来看)都是随机的数据流经net(即使

username
and
password
相同)。

这很重要,因为

password
泄漏很严重。并不是因为有人可以破坏您应用程序的帐户(除非您是银行,否则这是很小的损失-
但是您不会问这样的问题:D)。主要是因为人们倾向于对多个站点(包括银行帐户)使用相同的密码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413278.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号