我使用sails.js,我可以使用API修改mongodb中的数据,例如创建新用户,修改用户等。如何禁止非授权用户访问API?
答案 0 :(得分:1)
如果没有任何进一步的背景信息,您需要进入这里:
策略:这些是在路由时执行的功能,例如调用/ api / view。在允许访问路径控制器逻辑
身份验证系统:有人提到过passportjs。我个人会创建自己的用户模型,用户控制器和视图,以便注册,登录,忘记密码某人。为什么?因为您需要在某些方面了解sails如何与身份验证,会话,策略和其他进程协同工作。简而言之,创建一个用户模型来存储用户的信息,也许有一个oncreate方法,在用户记录保存为新密码之前加密密码。创建用户控制器,管理登录,注销,注册和忘记密码。创建每个控制器操作的路由,登录视图将在控制器中调用您的登录操作,并找到将给定密码与存储的加密密码进行比较的用户模型。
会话管理:用户登录或注销后,您需要管理他们的"会话"。简单地说,如果你不管理会话,用户将不得不登录,因为系统不会记住它们。这在帆中非常容易,我建议阅读:http://sailsjs.org/documentation/concepts/sessions为了简单起见,当用户登录时,你将设置一个会话变量,例如req.session.User.id = 1,当你需要它们时注销后,您可以取消强制他们返回登录页面的会话。
返回策略:我之前提到过这些,但您可以在策略中检查会话以查看是否有权查看每个控制器操作。这意味着您可以非常详细地了解他们可以和不能使用的操作。可以在此处找到策略示例:http://sailsjs.org/documentation/concepts/policies在我的策略中,我只有一个LoggedIn函数,用于检查用户是否具有有效会话,如果没有,则将它们发送到登录路由。这种基本保护措施阻止人们在登录时查看他们不应该做的事情。
蓝图路线/操作:您需要关闭默认情况下已开启风帆的内置蓝图。当您想通过Api界面从数据库中读取/写入/删除项目时,这些都很棒,但在生产中这很危险,您需要策略与会话一起完成工作。要关闭蓝图,请在此处查看指南:http://sailsjs.org/documentation/anatomy/my-app/config/blueprints-js了解它们大多数都设置为真?阅读每个项目的评论,并确定是否需要将其切换为错误。
如果您需要任何方面的进一步帮助,请告诉我。尽可能具体,因为它有很多帮助。我建议看一下" Sails in action"它是一本涵盖这些信息的电子书,它也非常清楚,只有示例代码!
答案 1 :(得分:0)