我有一个控制器操作,只有在用户具有相应角色时才能访问该操作。 它在尝试访问应用程序时已经工作并拒绝访问,但是当我在Web浏览器的搜索栏中手动操作路径时,仍然可以访问它。因此,我将@Security注释添加到该操作,但不是拒绝访问消息,而是要重新路由/重定向到另一个页面。我怎么能这样做?
/**
* @Security("has_role('ROLE_DOCUMENT_EDIT')")
* @Route("/document/edit/{id}", name="documentBundle_edit", requirements={"id" = "\d+"}, defaults={"id" = 0})
*/
public function editAction(Request $request, $id) {
...
带有安全注释的操作,我正在考虑在此页面后面添加重定向:
/**
* @Route("/document/view/{id}", name="documentBundle_view_document", requirements={"id" = "\d+"}, defaults={"id" = 0})
*/
public function viewAction(Request $request, $id) {
...
答案 0 :(得分:0)
Symfony中提供了一个示例。不要忘记定义服务。
https://symfony.com/doc/3.4/security/access_denied_handler.html
答案 1 :(得分:0)
答案 2 :(得分:0)
SensioFrameworkExtraBundle可以添加statusCodeOption,如here所述。
/**
* @Security("is_granted('ROLE_DOCUMENT_EDIT')", statusCode=901)
*/
public function editAction(Request $request, $id)
{
}
因此,您可以为自己的专有状态代码添加自定义错误页面。但是,Haven没有对它进行过测试,只是一个想法。