2017-05-31 174 views
0

我正在使用FOSUserBundle,並遇到一個我無法更正的錯誤。 (我使用Symfony 3.2.9)FOSUserBundle - 未找到「GET/login /」的路由

我想它來自我的security.yml文件,但我找不到是什麼讓我的路由錯誤。

這可能只是一個細節,但我使用nginx,我的本地URL是:127.0.0.1:83/app_dev.php/。

只有我/登錄路徑不起作用。

我的網址/login,但它重定向我/login/

和我:No route found for "GET /login/" (from "http://127.0.0.1:83/app_dev.php/")

這裏是我的security.yml文件:

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: bcrypt 

    role_hierarchy: ~ 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/, role: ROLE_ADMIN } 

我config.yml( fosuserbundle config):

# FOSUser Configuration 
fos_user: 
    db_driver: orm 
    from_email: 
     address: [email protected] 
     sender_name: Admin 
    firewall_name: main 
    user_class: ProjectBundle\Entity\User\User 
    registration: 
     form: 
      type: ProjectBundle\Form\RegistrationType 

而且php bin/console debug:router

admin_user_index      ANY  ANY  ANY /admin/user/           
    admin_user_show      ANY  ANY  ANY /admin/user/{id}/show         
    admin_user_edit      ANY  ANY  ANY /admin/user/{id}/edit         
    admin_user_new      ANY  ANY  ANY /admin/user/create          
    home         ANY  ANY  ANY /              
    lexik_translation_overview   GET  ANY  ANY /admin/translations/         
    lexik_translation_grid    GET  ANY  ANY /admin/translations/grid        
    lexik_translation_new    GET|POST ANY  ANY /admin/translations/new         
    lexik_translation_invalidate_cache GET  ANY  ANY /admin/translations/invalidate-cache     
    lexik_translation_list    GET  ANY  ANY /admin/translations/api/translations     
    lexik_translation_profiler   GET  ANY  ANY /admin/translations/api/translations/profiler/{token} 
    lexik_translation_update    PUT  ANY  ANY /admin/translations/api/translations/{id}    
    lexik_translation_delete_locale  DELETE  ANY  ANY /admin/translations/api/translations/{id}/{locale}  
    lexik_translation_delete    DELETE  ANY  ANY /admin/translations/api/translations/{id}    
    fos_user_security_login    GET|POST ANY  ANY /login             
    fos_user_security_check    POST  ANY  ANY /login_check           
    fos_user_security_logout    GET|POST ANY  ANY /logout             
    fos_user_registration_register  GET|POST ANY  ANY /register/            
    fos_user_registration_check_email GET  ANY  ANY /register/check-email         
    fos_user_registration_confirm  GET  ANY  ANY /register/confirm/{token}        
    fos_user_registration_confirmed  GET  ANY  ANY /register/confirmed  

編輯:更多信息

我的routing.yml:

project: 
    resource: "@ProjectBundle/Controller/" 
    type:  annotation 
    prefix: /

fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 

登錄路徑的routing.xml:FOSUserBundle Routing File

也許我問題來自我的Nginx配置(這是我第一次使用它) :

server { 
    listen 83 default_server; 
    listen [::]:83 default_server; 

    server_name localhost; 

    root /var/www/html/MyProject/web; 

    access_log   /var/log/nginx/access.log; 
    error_log    /var/log/nginx/error.log; 

    location/{ 

    try_files $uri /app.php$is_args$args; 
    } 
    location ~ ^/(app|app_dev|app_test|config)\.php(/|$) { 

    fastcgi_split_path_info ^(.+\.php)(/.*)$; 
    include /etc/nginx/fastcgi_params; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 

} 

有沒有人有想法?我真的被困在我的項目中。 預先感謝您。

回答

0

Symfony的設置看起來不錯,最後一個斜線。我重複了本地。也適用於apache2和nginx。 我會建議玩nginx配置文件。位置部分看起來很可疑。

+0

噢好吧。我從來沒有用過nginx,這是我第一次:S。 你能給我你的配置嗎? –

+0

這是來自我的項目,工作正常 security.yml:https://code.re/aj8 config.yml:https://code.re/aj9 routing.yml:https://code.re/aja –

+0

謝謝!我明天測試它,告訴你它給了什麼:) –

0
No route found for "GET /login/" 

認爲該路由不存在,是正確的,如果你看看你的php bin/console debug:router你可以看到路由/login/login/,刪除請

+0

我知道,我使用'{{url('fos_user_security_login')}}'來產生我的路線,它是/ login。但是,當我去這個網址,這是指我/登錄/ –

+0

你有一些文件像routing.xml或yml與一些fosueser配置? –

+0

在我的routing.yml中,我只有: '項目: 資源: 「@ ProjectBundle /控制器/」 類型:註釋 前綴:/ fos_user: 資源:「@ FOSUserBundle /資源/配置/路由/ all.xml「' –