我的symfony 2.0应用程序出了问题。我无法通过谷歌找到合适的解决方案所以我在这里:)
我试图创建一个登录表单。 这是我的security.yml文件:
security:
encoders:
Domicon\AdminBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 10
providers:
admin:
entity: { class: DomiconAdminBundle:User, property: email }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_area:
pattern: ^/admin.*
form_login:
check_path: /admin/login_check
login_path: /admin/login
logout:
path: /admin/logout
target: /admin
anonymous: ~
logout: true
http_basic:
realm: "Secured Admin Area"
provider: admin
access_control:
- { path: ^/admin/login.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin.*, role: ROLE_ADMIN }
我的控制器的代码看起来像symfony 2.0 docs http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form
中的代码我的路线
DomiconAdminBundle_login:
pattern: /login
defaults: { _controller: DomiconAdminBundle:User:login }
DomiconAdminBundle_login_check:
pattern: /login_check
登录表单显示正确,但如果我提交表单,则应用程序会重定向回登录表单并且网址已更改为
http://localhost/Domicon/web/app_dev.php/admin/login?_username=admin&_password=pass
我没有任何错误或其他任何错误。我不明白为什么我没有错误以及为什么网址改为此。
答案 0 :(得分:2)
我认为您忘记在<form>
标记中执行操作,如果登录成功,您需要告诉重定向的位置。
另一件事我注意到你已经在routing.yml和security.yml中给出/登录你给了/ admin / login。
第三个是security.yml中的login_path:/ admin / login_check和您给出的routing.yml
/ login_check。
在routing.yml
中更改/登录/ admin / login在routing.yml中将/ login_check更改为/ admin / login_check
<form action="{{ path('DomiconAdminBundle_login_check') }}" method="post">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
</div>
{#
If you want to control the URL the user is redirected to on success #}
<input type="hidden" name="_target_path" value="/yourredirectpath" />
<input type="submit" name="login" value="Submit" />
</form>
希望这有帮助。