2013-01-10 56 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