我有一个 symfony 应用程序,它利用用户角色来加快开发时间。根据我的经验,我遇到的问题是,如果他们没有与用户关联的适当角色,即使他们当前已通过身份验证,它也会将他们重定向到登录页面。
我将如何覆盖这种行为并让他们保持登录状态,只需将他们发送到一个信息页面,告诉他们需要采取哪些行动来增加他们的角色/特权?
我目前有一个这样设置的提供程序来捕获AccessDeniedException
:
website.access_denied:
class: %website.access_denied.class%
arguments: [ @doctrine.orm.entity_manager, @website.website ]
tags:
- { name: kernel.event_listener, event: kernel.exception, method: handle }
然后,在我的security.yml
,我有这样的access_denied_handler
设置:
firewalls:
website:
access_denied_handler: website.access_denied
最后,我的课:
class AccessDenied implements AccessDeniedHandlerInterface
{
public function handle(Request $request, AccessDeniedException $accessDeniedException)
{
// do something here
}
}