我已经开发了一个应用程序,直到现在我已经成功地通过不显示/隐藏某些屏幕的菜单选项或按钮来限制屏幕访问。但现在的问题是用户在地址栏中输入 url 时能够访问屏幕。
我知道我不是第一个这样做的人,所以必须有某种标准做法。因此,如果有人知道任何图书馆或某种方式来做到这一点,请告诉我。
谢谢你。
免责声明 - 我不知道这将如何转化为 Clojure,因为我从未使用过它。
通常,您使用授权处理程序装饰响应视图的方法。该处理程序知道如何与您的身份验证后端对话。它从当前上下文中获取用户标识符(可以是用户 ID/用户名等),并在后端查询用户对所请求视图的授权。
如果通过,则显示视图。
如果它被拒绝,则根据业务规则(和安全准则)采取行动。这些可以像友好的“哎呀,这里不允许你”一样简单;记录操作,然后结束用户的会话。
如果您的应用程序有一组有限的端点 (URL),您可以创建一个到用户的端点静态映射并将其用作您的访问控制列表 (ACL)。然而,在大多数现代应用程序中,ACL 是跨一系列对象控制的——并且端点(URL)不受限制,因为它们是动态的。例如/inventory/product/1
,/user/admin/3
等。
更新:
此链接提供了装饰器模式的可视化图表。
更新 2:
授权库提供了一些帮助程序来进行授权检查(“这个用户是否允许查看”),但代码中的实现由单个应用程序决定。
通常您会使用一个或多个身份验证库(如 oath);但授权部分由您的实施决定。
一个快速的 google 引导我使用沙条保护 clojure web 应用程序,这应该与您更相关。