1

我有一个 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
    }
}
4

0 回答 0