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