0

我有一个与 Laravel 后端应用程序混合的 ReactJS 前端应用程序。

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

我将用户的 ID 作为状态存储并进行如下检查:

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

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

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

4

1 回答 1

2

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

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

始终在后端验证

于 2019-02-26T01:29:09.020 回答