【问题标题】:ReactJS display components based on authenticationReactJS 基于认证的展示组件
【发布时间】:2019-02-26 01:10:14
【问题描述】:

我有一个 ReactJS 前端应用和一个 Laravel 后端应用。

我遇到了身份验证问题。我正在使用 Laravel auth 对用户进行身份验证,但在显示组件时遇到了一些麻烦。我有一些帖子(/posts/1 或 /posts/2 等...),当用户访问该页面时,如果他是作者,他可以修改帖子。

我将用户的 id 作为状态存储并像这样检查:

if(this.props.user.id === this.props.posts.id_user) ...

但这确实不安全,因为任何人都可以使用开发工具修改状态。通过修改状态,即使他不是作者,用户也可以修改帖子,因为他可以访问所有显示的管理编辑的组件。

有没有“神奇”的技巧来防止它?

【问题讨论】:

  • 可悲的是,它真的没有魔法。您必须在后端验证尝试修改某些资源的用户是否有权这样做。
  • 所以他可以通过改变状态来随心所欲地修改显示,但我仍然需要对后端进行检查,对吗?
  • 是的,没错。如果用户在浏览器中弄乱了自己的数据,这不是问题,但是您需要防止用户在后端修改他们无权访问的资源。
  • 那我去看看,谢谢它真的帮了我!

标签: reactjs laravel redux laravel-authentication


【解决方案1】:

首先,你所说的stateapp state,驻留在浏览器中,如果用户改变了那个状态,效果只会受到用户自己的影响,在他的浏览器中,理论上,不会更改后端/数据库中的datastate,除非您没有实现您所说的相同验证。

如果你在前面做if(this.props.user.id === this.props.posts.id_user),你绝对必须在后面做,那是真正的验证很重要的地方,那是用户无法更改用户ID的地方,因为,例如,您将在用户会话中使用存储在 cookie 或 Redis 服务器中的那个。

始终在后端验证

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 2021-04-26
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2018-10-27
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多