我想用Symfony 3.3尝试新的json_login。跟随文档使用干净的项目..但防火墙完全忽略了json_login部分。我收到一个错误,说控制器没有返回响应。
我正在粘贴我的security.yml吼叫..
security:
providers:
db_provider:
entity:
class: IgsemAuthBundle:User
property: email
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_USER: IS_AUTHENTICATED_ANONYMOUSLY
encoders:
Igsem\AuthBundle\Entity\User:
algorithm: bcrypt
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
provider: db_provider
json_login:
check_path: check
access_control:
- { path: ^/secure, roles: ROLE_ADMIN }
我还有一个带有检查路径注释的控制器:
/**
* @Route("/check", name="check")
*/
public function checkAction(Request $request, AuthenticationUtils $authUtils)
{
}
我尝试使用路径,使用名称,但也使用相对路径登录或/登录和其他一些组合..具有相同的
感谢您的帮助
答案 0 :(得分:2)
文档中没有明确提及,但要使此配置生效,您需要请求指定"Content-Type": "application/json"
标头。否则,请求只会传递给控制器,而不会被安全监听器处理。
此外,无论是否按设计,您仍然希望实现控制器的响应,因为 - 至少在我的Symfony 3.3.14上 - Response
未按照文档。因此,虽然用户已经过身份验证(或者错误的凭据出错)我仍然需要自己设计Response
(这对我来说没问题,至少我保留对响应格式/结构的控制权。)
答案 1 :(得分:-1)
在没有更新Symfony文档之前,json_login选项需要一个success_handler和一个failure_handler。否则它会抛出一个错误..仅仅定义目标路由是不够的..我已经提出了一个PR应该是很快就修好了