如果用户是 post React + Django Rest Framework 的所有者,则条件组件呈现

Posted

技术标签:

【中文标题】如果用户是 post React + Django Rest Framework 的所有者,则条件组件呈现【英文标题】:Conditional component render if user is an owner of post React + Django Rest Framework 【发布时间】:2021-11-08 21:34:24 【问题描述】:

我有 f.e.用户和帖子模型。用户对象有一个 id,而 Post 对象有一个所有者 id。我想在用户是帖子的所有者时呈现<Edit /> 按钮。最好的方法是什么?

我可以使用我的 django 端点之一从数据库中获取当前用户 ID 并检查 if (user.id === post.owner),但这是最好的方法吗?

此外,如果其中有人通过链接打开编辑站点,我如何阻止或重定向不是所有者的用户。我是否也应该简单地检查if user.id === post.owner

一个额外的问题:我现在将我的 JWT 令牌存储在 localStorage 中。如果我想将它隐藏在我的吹风机中,我应该寻找什么(如果我点击 F12,我可以在应用程序选项卡中找到它)?

【问题讨论】:

见React Client Side Authentication - for restricting users for specific pages & JWT vs Cookies for Authentication。还有if (user.id === post.owner)也可以 【参考方案1】:

您可以将检查转移到编辑组件,将 user.id 发送给它(它应该有 post.owner),然后在编辑组件中处理它。

为避免人们直接访问编辑链接,有许多不同的选项可以防止或增加难度,这里有两个简单的选项:

    在页面加载时使用 useEffect 挂钩并检查是否未经授权重定向到上一页 随机化 url,所以每次都不一样

【讨论】:

如何授权用户?我的意思是if (user.id === post.owner) 就够了? 基本上是的,你应该把大部分注意力集中在你什么时候在组件加载周期中检查它,即使那样你也可能使用直观的方式就可以了

以上是关于如果用户是 post React + Django Rest Framework 的所有者,则条件组件呈现的主要内容,如果未能解决你的问题,请参考以下文章

在 React 应用程序中使用 axios.post 到 Django 端点时出现 403 错误代码

Django:如果 slug 错误,则重定向 url

django框架学习:二十四.django表单post登录案例

如何在django api调用的react js中使用来自post请求的响应部分的数据?

Django - 从 GET 更改为 POST 时出错

Django表格,POST