Symfony 简单登录表单问题
Symfony simple login form issue
我在登录时遇到问题。我已经阅读了 Symfony 文档、Whosebug 主题和其他教程。当我尝试使用 Firefox 或 Chrome 登录时,我第一次无法登录,但在第二次尝试时我成功了。在 IE 中,我根本不会登录。你能帮忙吗?我没主意了。这是我的代码:
index.html.twig
<form action="{{ path('login_check') }}" method="post">
<input type="text" id="username" name="_username" placeholder="{{ 'INDEX_LOGIN_USERNAME'|trans }}" />
<input type="password" id="password" name="_password" placeholder="{{ 'INDEX_LOGIN_PASSWORD'|trans }}" />
{#<input type="hidden" name="_target_path" value="/admin" />#}
<button type="submit"></button>
</form>
routing.yml
login:
path: /login
// without next line (defaults) I receive an error: Unable to find the controller for path "/login". The route is wrongly configured.
defaults: { _controller: FC_Hlinsko_Bundle:Default:index }
options: { i18n: false }
logout:
path: /logout
options: { i18n: false }
homepage:
path: /
defaults: { _controller: FC_Hlinsko_Bundle:Default:index }
admin:
path: /admin
defaults: { _controller: FC_Hlinsko_Bundle:Admin:index }
security.yml
security:
providers:
in_memory:
memory:
users:
admin:
password: y$aE7n0XduDqfYd5xZVfm.G.uiIZSMUCdtPxfz6VRgdBKrU2ihxcC7i
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
anonymous: true
secured_area:
pattern: ^/
form_login:
check_path: /login_check
login_path: login
logout:
path: logout
target: homepage
anonymous: ~
access_control:
# require ROLE_ADMIN for /admin*
- { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /admin, roles: ROLE_ADMIN }
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: bcrypt
cost: 12
问题已解决。我探索了 dev.log 并且因为 IE 它写了这个错误:你的会话已经超时,或者你已经禁用了 cookie ...所以经过一些搜索我发现 undescore 不能在域名中(我有我的域名 fc_hlinsko.local/app_dev.php/), 所以我创建了新的 Symfony 项目和新的 Bundle 并且现在一切似乎都正常..我还必须添加到我的 security.yml在 form_login 此代码下:require_previous_session: false
我在登录时遇到问题。我已经阅读了 Symfony 文档、Whosebug 主题和其他教程。当我尝试使用 Firefox 或 Chrome 登录时,我第一次无法登录,但在第二次尝试时我成功了。在 IE 中,我根本不会登录。你能帮忙吗?我没主意了。这是我的代码:
index.html.twig
<form action="{{ path('login_check') }}" method="post">
<input type="text" id="username" name="_username" placeholder="{{ 'INDEX_LOGIN_USERNAME'|trans }}" />
<input type="password" id="password" name="_password" placeholder="{{ 'INDEX_LOGIN_PASSWORD'|trans }}" />
{#<input type="hidden" name="_target_path" value="/admin" />#}
<button type="submit"></button>
</form>
routing.yml
login:
path: /login
// without next line (defaults) I receive an error: Unable to find the controller for path "/login". The route is wrongly configured.
defaults: { _controller: FC_Hlinsko_Bundle:Default:index }
options: { i18n: false }
logout:
path: /logout
options: { i18n: false }
homepage:
path: /
defaults: { _controller: FC_Hlinsko_Bundle:Default:index }
admin:
path: /admin
defaults: { _controller: FC_Hlinsko_Bundle:Admin:index }
security.yml
security:
providers:
in_memory:
memory:
users:
admin:
password: y$aE7n0XduDqfYd5xZVfm.G.uiIZSMUCdtPxfz6VRgdBKrU2ihxcC7i
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
anonymous: true
secured_area:
pattern: ^/
form_login:
check_path: /login_check
login_path: login
logout:
path: logout
target: homepage
anonymous: ~
access_control:
# require ROLE_ADMIN for /admin*
- { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /admin, roles: ROLE_ADMIN }
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: bcrypt
cost: 12
问题已解决。我探索了 dev.log 并且因为 IE 它写了这个错误:你的会话已经超时,或者你已经禁用了 cookie ...所以经过一些搜索我发现 undescore 不能在域名中(我有我的域名 fc_hlinsko.local/app_dev.php/), 所以我创建了新的 Symfony 项目和新的 Bundle 并且现在一切似乎都正常..我还必须添加到我的 security.yml在 form_login 此代码下:require_previous_session: false