我是新來的Symfony,我跟着一個教程,安全和用戶管理的一部分,但我stucked與似乎來自我的路由問題。Symfony的:問題與路由
我只是創建了實際工作,當我去上/app_dev.php/login
登錄表單,表單顯示出來,我可以填滿它,但是當我提出它,我得到了以下錯誤:
No route found for "GET /" (from "http://dev-05/ANTOINE/Symfony/web/app_dev.php/login")
404 Not Found - NotFoundHttpException
1 linked Exception:
ResourceNotFoundException »
得到這個錯誤後,如果我回到主頁,我可以看到我已連接,所以它正在工作,但重定向不是。
根據文檔,這來自於可能被錯誤配置的路由,但我不知道我犯了一個錯誤。
這是我的形式,我的security.yml和我的routing.yml文件:
{% extends "AKMUserBundle::layout.html.twig" %}
{% block akmuser_body %}
{% if error %}
<div class="alert alert-danger">{{ error.message }}</div>
{% endif %}
<form action="{{ path('login_check') }}" method="post">
<label for="username">Login : </label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Mot de passe :</label>
<input type="password" id="password" name="_password" />
<br />
<input type="submit" value="Connexion" />
</form>
{% endblock %}
security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: ['ROLE_USER'] }
admin: { password: adminpass, roles: ['ROLE_ADMIN'] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
form_login:
login_path: login
check_path: login_check
logout:
path: logout
target: /platform
的routing.yml:
akm_platform:
resource: "@AKMPlatformBundle/Resources/config/routing.yml"
prefix: /platform
login:
path: /login
defaults:
_controller: AKMUserBundle:Security:login
login_check:
path: /login_check
logout:
path: /logout
我m知道.yml
文件非常敏感,需要4個空格而不是通常的縮進,所以我重寫了t他一行一行地寫着空格,但它仍然不起作用。
我希望有人能幫助我:對 如果你需要一些信息,不要猶豫!
編輯:這是我的php bin/console debug:router
編輯2的結果是:爲了擺脫我的問題我不得不添加default_target_path在我security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: ['ROLE_USER'] }
admin: { password: adminpass, roles: ['ROLE_ADMIN'] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
form_login:
login_path: login
check_path: login_check
default_target_path: akm_platform_home
logout:
path: logout
target: /platform
在瀏覽器中查看登錄表單的源極和驗證了該方法的POST和動作是/ login_check。錯誤消息意味着你有GET /(Off topic:yaml不需要4個空格,只需要保持一致)。 – Cerad
1st將創建一個指向項目的/ web目錄的虛擬主機。 /路線是否有效?http://dev-05/ANTOINE/Symfony/web/app_dev.php – COil
我編輯了我的帖子,所以你可以看到我的表格,這對我來說似乎沒問題。關於路由,如果我嘗試去/web/app_dev.php它不起作用,但最後用「/」表示它工作正常,你認爲這個問題來自這裏嗎? – AKM