![](/img/trans.png)
[英]Symfony LexikJWTAuthenticationBundle Unable to authenticate
[英]Symfony cannot authenticate
我正在遵循Symfony食谱,并在“避免常见的陷阱”中说:
另外,如果您的防火墙不允许匿名用户(没有
anonymous
密钥),则需要创建一个特殊的防火墙,允许匿名用户登录页面firewalls: # order matters! This must be before the ^/ firewall login_firewall: pattern: ^/login$ anonymous: ~ secured_area: pattern: ^/ form_login: ~
所以我实现了我的security.yml
文件,如下所示:
security:
providers:
in_memory:
memory:
users:
ryan:
password: pass1
roles: ROLE_USER
admin:
password: pass2
roles: ROLE_ADMIN
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
anonymous: ~
pattern: ^/login$
context: foo
main:
pattern: ^/
form_login:
login_path: /login
check_path: /login
default_target_path: /secret
logout:
path: /logout
target: homepage
context: foo
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/secret, roles: ROLE_ADMIN }
问题是,每当我尝试登录时,我都将重定向到登录页面,而我从未获得过身份验证。 我还尝试在两个防火墙之间共享上下文(即它们使用相同的context
),但是没有任何积极效果。
此配置有什么问题?
这是我的login.html.twig
模板:
<html>
<body>
{% if error %}
<div>{{ error.messageKey | trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('login') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<button type="submit" >Login</button>
</form>
</body>
</html>
我不知道为什么(如果有人做,欢迎他们加入另一个答案),但如果我放在form_login
元素内外 login_firewall
和内main
,那么它可以让用户进行身份验证。
换句话说,工作的security.xml
配置为:
( 编辑 : main -> form_login
也可以为null
)
security:
providers:
in_memory:
memory:
users:
ryan:
password: pass1
roles: ROLE_USER
admin:
password: pass2
roles: ROLE_ADMIN
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
anonymous: ~
pattern: ^/(login|logout)?$
context: foo
form_login:
login_path: /login
check_path: /login
logout:
path: /logout
target: homepage
main:
pattern: ^/
form_login: ~
context: foo
access_control:
- { path: /(login|logout)?$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /secret, roles: ROLE_ADMIN }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.