我们有一个公共URL-URL1和一个私有URL-URL2
我们想要一个管理员用户,该用户只能在私有URL2中以admin(具有admin角色)身份登录。 如果同一用户尝试从公共URL1登录,则应允许他以非管理员用户身份登录(没有管理员角色),即应阻止他从公共URL1以管理员用户身份登录。
我们如何防止Liferay管理员用户(具有管理员角色)登录到公共URL,而应该允许他以非管理员用户身份从公共URL登录
答案 0 :(得分:1)
创建一个Lifecycle Event,例如如记录的模板中所述的“登录前操作”(或-post-)。在其实现中,您可以访问LifecycleEvent,该事件封装了原始的HTTP请求/响应。这样,您可以确定谁正在登录以及他们从哪个端点连接。根据您的条件进行验证,然后发送适当的重定向。
编辑:在您评论这可能是主要的性能问题之后:
login.events.pre
,而不是链接的默认组件键key=servlet.service.events.pre
,您可能想尝试login.events.post
。如果您对性能确实很挑剔,则可能希望找到一种非数据库机制来存储已检查访问权限的标志-例如在会话中存储批准的浏览器的地址。哇,我不会猜到我会公开提议在会议中存储一些东西。
但总的来说:性能问题是可以衡量的。阅读代码很少会发现性能问题,或者至少不能发现值得解决的问题。