【问题标题】:manipulating stored user object操作存储的用户对象
【发布时间】:2014-06-10 02:40:30
【问题描述】:

我正在使用 Passportjs 在 angular +saijs 堆栈上对用户进行身份验证。当用户授权时,我将用户详细信息(角色、姓名、电子邮件)的对象存储在其他控制器可以访问的角度控制器中。我的想法可能不正确,我是整个 js 堆栈的新手,但由于这个对象是由一个角度控制器存储的,所以它对客户端是可见/可编辑的。如果是这样,那么他们就有能力改变自己的角色并提出请求,这并不理想。如果我的想法是正确的,我的问题是如何禁止他们这样做。如何检查该对象是否被操纵?

【问题讨论】:

  • 虽然您可能希望在客户端检查角色等以提供适当的 UI 提示,但您应该在服务器上验证适当的凭据和访问权限,而不是依赖客户端诚实/准确现在的角色。即不要依赖你的客户端来阻止访问某些东西,在服务器上检查它。
  • 听起来我的担忧是正确的。查看 passportjs 以验证它说使用 req.user 的用户,这是来自浏览器的请求,所以我不确定这是执行此操作的正确方法。考虑过使用 passportjs 来验证来自服务器的用户的正确操作吗?

标签: angularjs node.js sails.js passport.js


【解决方案1】:

Javascript 都是客户端,这意味着不要信任任何东西。您当然可以将信息存储在控制器中,但应该经常更新。

在我正在开发的应用程序中,我使用.resolve 在每次路线更改时验证用户的凭据。每次路由更改时,都会调用后端来更新用户信息/凭据。这也允许监听来自后端的响应,说会话已超时(然后我使用interceptor 将它们重定向到登录页面)。

一般来说,如果是 JavaScript,假设后端需要对其进行验证。客户不可信。

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 2020-01-07
    • 2010-09-16
    • 2020-11-13
    • 2020-05-29
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多