【发布时间】:2018-03-06 21:14:26
【问题描述】:
我有一个控制器操作,只有在用户具有正确的角色时才能访问它。 尝试在应用程序中访问时它已经在工作并拒绝访问,但是当手动操作我的网络浏览器搜索栏中的路径时,它仍然可以访问。因此,我在该操作中添加了 @Security 注释,但不是 Access denied 消息,而是我想重新路由/重定向到另一个页面。我该怎么做?
/**
* @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) {
...
这是带有安全注释的操作,我正在考虑在它之后添加一个 redirect 到此页面:
/**
* @Route("/document/view/{id}", name="documentBundle_view_document", requirements={"id" = "\d+"}, defaults={"id" = 0})
*/
public function viewAction(Request $request, $id) {
...
【问题讨论】:
-
您可以使用 'access_control'(security.yml) 而不是为控制器中的每个功能添加注释,您将拥有更多控制权,您可以将所有被拒绝的请求重定向到另一个页面(例如登录页面) symfony.com/doc/2.8/security/access_control.html
-
我读过关于这样做的信息。但是我的项目中有不同的捆绑包,我不希望所有 access_denied 事件都重定向到同一页面,而是重定向到捆绑包中的特定页面..对此有什么想法吗?@rescobar
标签: symfony security redirect annotations