【发布时间】:2014-06-11 19:25:53
【问题描述】:
使用 deadbolt2 和 play-authenticate,我可以根据用户的角色和权限定义对控制器和操作级别的限制。如果当前用户不满足这些限制,则调用配置的 deadbolt 处理程序中的AbstractDeadboltHandler.onAuthFailure。
现在,我想要实现的是拥有不同的用户角色(例如,trial_user、basic_user、pro_user、admin,...)并只允许某些用户调用特定操作(换句话说:阻止其他用户调用操作。例如,不应允许 trial_user 创建新帖子)。
到目前为止,这有效,因为没有所需角色的用户无法调用该操作。但是,问题是:一旦不满足限制,用户就会被重定向到要求他登录的通用“身份验证失败”页面。在我看来,这不是正确,因为用户实际已登录并且仅缺少某个角色(或具有不能执行该操作的角色)。
在这种情况下,我如何在onAuthFailure 方法中做出反应?如何区分“用户未登录”和“用户没有特定角色”。显然,总是要求用户登录不是正确的做法。我希望收到“您无权访问该页面”的通知。
我如何知道身份验证失败背后的具体原因?使用 deadbolt2 甚至可能吗?
【问题讨论】:
标签: permissions playframework-2.2 play-authenticate deadbolt deadbolt-2