如何基于REST API管理Web应用程序的用户权限。我的意思是API上的所有操作都需要选择权限,例如 manage_posts 或 manage_users 。在每次调用时都很容易检查API端的权限,并在用户尝试执行他不应该执行的操作时返回非授权。但是在Web应用程序端,我们必须隐藏按钮/禁止输入某个地址。
在我看来,查询所有必需的权限每个页面视图更改都不好,但保留localstorage / session的所有权限似乎并不好。
创意1:
API:
/user/current_user
{
name: "Name",
email: "name@domain.com",
permissions: ["manage_posts", "manage_users"]
}
有了这些信息,我们将其存储在本地存储/会话中,这用于切换按钮和基于路由器的访问。此外,如果403发生,FORBIDDEN和应用程序将设法重定向到非授权页面,所有API端点也将检查所需权限并返回403代码。
创意2:
API
POST:/user/check_permission
{
status: "OK"
}
每次Web应用程序需要检查权限状态时,这都需要Web应用程序查询API。这是“更安全”,但我认为这不好。