【发布时间】:2016-05-18 03:39:09
【问题描述】:
我正在创建一个 web redux-react 应用程序,该应用程序将具有许多不同的权限级别。许多用户可能正在与一个数据进行交互,但有些用户可能会限制他们可以做什么。
对我来说,设置数据交互权限的明显方法(保存在应用服务器后面)是将某些权限与不同的 redux 操作相关联。然后,当用户保存他们的状态时,客户端应用程序将捆绑用户的操作历史并将其发送回服务器。然后可以将这些操作应用于服务器中的数据,并且可以针对用户 jwt 逐个检查权限。
这意味着我们的 reducer 代码可以在服务器上同构地使用很多。
我找不到任何关于此的资源/讨论。在 redux 应用程序中处理复杂权限的正常方法是什么?纯粹在端点进行身份验证似乎很麻烦,这需要重写大量已经在客户端减速器中编写的新代码。有什么理由不继续创建一个 reducer 来检查每个操作的身份验证吗?
积分:
- 我们必须假设发送到服务器的操作是经过身份验证的,但由无权发送这些操作的用户发送
- 如果权限已被检查并且在操作中,那么 reducer 可以检查权限并且是纯的
【问题讨论】:
-
最重要的是,您需要禁止后端的操作,对吗?否则,无论您在前端做什么,您的应用程序都不会安全。之后,为了引导用户了解可以做什么和不可以做什么,您只需隐藏/禁用您的 UI 元素。真的有必要控制动作吗?
-
没错,问题是,在后端,在用户通过身份验证并对其权限进行双重检查之后,确定是否允许操作的最佳方法是什么。存储中间件?在减速机中?
-
你在后台运行什么? Node + Redux??
-
是的,节点。在我提出的用例中,我们也将使用 redux(主要使用一些 reducer 作为前端)。流程是:动作被分派到前端的reducer;经过一堆交互后,用户将点击保存;用户的操作历史被发送到服务器;服务器将操作重新应用到服务器上的状态,并附加权限,这些操作已由 auth 中间件检查;一旦完成,状态将被持久化到一个 db..
标签: authentication reactjs permissions redux