大佬教程收集整理的这篇文章主要介绍了node.js – http谓词上的Mongoose / Express授权,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我现在想要实现的是以下类型的sceanrios:
Scenario I: e.g. blogpost - GET -> no authentication required - POST/PUT/deletE -> authentication required Scenario II: e.g. user - GET -> authentication required - POST/PUT/deletE -> authentication required plus username of logged in user has to match
我已经看过everyauth和mongoose-auth了,但找不到能给我这种控制的东西.
>用户将用户名和密码传递给服务器;
>服务器获取用户名和密码,并在数据库中检查是否有用户使用该密码.如果没有用户,只需回复错误;
>我们有一个用户,现在使用Express的内置会话机制.调用req.session.regenerate并在回调中执行req.session.userID = user.id. Express会自动将cookie发送给用户;
>创建一个中间件(必须在任何其他请求处理程序之前触发),它基本上在数据库中搜索req.session.userID.如果找到一个,则将其存储在req中,即req.user = user;
>在视图中,您只需检查是否设置了req.user变量.如果是,那么我们通过身份验证.而且你已经完成了!
ad 1 2)为了使身份验证安全,您应该使用一些加密(和/或httpS).例如,密码应该在DB中分为两部分:salt和hash. salt是随机生成的(在注册时)和hash = hash_it(pwd,salt),其中hash_it是一些散列算法(例如:MD5或SHA256).
现在,可以通过几个步骤进行客户端身份验证(仅当您可以使用JavaScript时):
>服务器随机地将new_salt发送到@L_772_31@页面(或者在JavaScript中生成一个,不需要隐藏生成算法);
>用户发送AJAX请求给我用户X的盐,服务器用存储在DB中的盐响应(盐是公共的);
>在使用salt的响应哈希pwd然后使用New_salt再次哈希结果时,将其存储在变量hpwd中;
>客户端将username,hpwd和new_salt发送到服务器;
>服务器从DB获取用户名密码,哈希pwd用new_salt,并将结果与hpwd进行比较(注意:你不存储new_salt).
这种方法很不错,因为每次@L_772_31@时(从外部角度来看)数据流都是通过网络进行的,即使用户名和密码相同也是如此.
这很重要,因为密码泄漏是一件严肃的事情.不是因为有人可以破坏你的应用程序的帐户(这是一个轻微的损害,除非你是一家银行 – 但是你不会问这样的问题:D).主要是因为人们倾向于为多个站点使用相同的密码,包括银行帐户.
以上是大佬教程为你收集整理的node.js – http谓词上的Mongoose / Express授权全部内容,希望文章能够帮你解决node.js – http谓词上的Mongoose / Express授权所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。