Symfony 4 access_control 不按角色工作

赖安先生

我尝试在我的路线上设置访问级别,我写了这个简单的security.yaml

security:
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
encoders:
    App\Entity\User: bcrypt

providers:
    db_provider:
        entity:
            class: App\Entity\User
            property: mobile
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: ~
        form_login:
            login_path: verify_token_page
            check_path: verify_token_page
            default_target_path: panel_index

# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
     - { path: ^/panel, roles: ROLE_SERVICE_MAN }

问题是,当我尝试访问localhost:8000/panel 时,我收到AccessDeniedHttpException

这是我的用户角色转储

array:1 [▼
  0 => "ROLE_SERVICE_MAN"
]

而且我还尝试不使用角色而是使用角色或用括号将 ROLE_SERVICE_MAN 包裹起来

这是我的 PanelController

<?php

namespace App\Controller;

use App\Entity\Car;
use App\Entity\User;
use App\Form\CarType;
use App\Repository\CarRepository;
use App\Repository\RequestRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

/**
 * @Route("/panel")
 */
class PanelController extends Controller
{
    /**
     * @return \Symfony\Component\HttpFoundation\Response
     * @Route("/",name="panel_index")
     */
    public function indexAction()
    {
        return $this->render('panel/index.html.twig');
    }

}
赖安先生

好的,第 1 点:我发现问题从来没有尝试直接从您的数据库更改用户角色,因为在您登录缓存或 cookie 等时设置一次......(我不知道确切位置)当您更改时,您应该重新登录或添加另一个用户以设置新角色。

第 2 点:检查您的实体中的关键角色(并且不要添加角色 [我的错误])。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章