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