2013-01-10 57 views
0

我試圖限制用戶去/ admin /中的任何內容,如果他們嘗試然後他們將被重定向到/登錄。Symfony2登錄身份驗證

目前我可以訪問使用傳統登錄表單的登錄頁面,如果我提交它,我會收到錯誤,返回'Bad Credentials',因此/ login_check似乎正常工作。但是,如果我轉到/ admin /或/ admin/foo,它不會重定向到/ login。相反,它表示'找不到GET/admin /的路由'。

我security.yml文件是:

jms_security_extra: secure_all_services:假 表達式:真

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 

role_hierarchy: 
    ROLE_ADMIN: 
    ROLE_SUPER_ADMIN: 
providers: 
    administrators: 
       entity: { class: XXXBundle:AdminUser, property: email } 

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    admin_area: 
     pattern: ^/admin 
     form_login: 
      login_path: /login 
      check_path: /admin/login_check 
     #anonymous: ~ 
     #http_basic: 
     # realm: "Secured Demo Area" 

access_control: 
    - { path: ^/admin, roles: ROLE_ADMIN } 

我的routing.yml文件是:

login: 
    pattern: /login 
    defaults: { _controller: XXXBundleSecurity:login } 
login_check: 
    pattern: /admin/login_check 
+0

你真的有你'/管理/ XXX'路線? –

+0

我是否需要爲每個管理頁面(例如/ admin/users)創建路由? – user1961082

+0

啊,所以我願意!謝謝你的幫助!!如果你想把它作爲答案,我會把它設置爲正確的? – user1961082

回答

1

看起來你錯過了兩條你試圖訪問的路線。嘗試添加到您的routing.yml:

admin: 
    resource: "@XXXBundle/Controller/Admin.php" 
    type:  annotation 
    prefix: /admin 

我喜歡Routes using Annotations非常讓我用在這個例子。

然後在你的admin.php的,你可以使用類似:

// XXXBundle/Controller/Admin.php 

namespace XXXBundle/Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Request; 

class AdminController extends Controller 
{ 
    /** 
    * @Route("/", name="admin_index") 
    */ 
    public function indexAction(Request $request) 
    { 
     // Code goes here 
    } 

    /** 
    * @Route("/foo ", name="admin_foo") 
    */ 
    public function fooAction(Request $request) 
    { 
     // Code goes here 
    } 
} 
+0

開頭的任何內容感謝您的提示。出於興趣,你會用管理員和前端使用同一個控制器嗎?也就是說,我在管理部分有可以添加/更新的頁面,他們顯然會用在前端,即關於我們等,你會把所有這些在一個PageController? – user1961082

+0

不客氣。我更喜歡爲後臺創建一個新的包來保持分離(我會說管理頁面也屬於後端)。因爲最終你不僅會得到特定於管理員的控制器,而且還會使用特定於管理員的模板,表單,模型等等。而且,您會很高興首先將它們分開。 – flu

+0

感謝您的幫助流感:) – user1961082