我尝试在我的路线上设置访问级别,我写了这个简单的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] 删除。
我来说两句