ReactJS 基于认证显示组件

ReactJS display components based on authentication

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

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

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

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

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

是否有 "magic" 技巧来防止它?

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

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

Always validate in the backend