簡體   English   中英

配置認證symfony2

[英]Configuring authentication symfony2

我正在嘗試使用以下配置在symfony2上配置身份驗證:

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:
        admin_area:
            pattern:   ^/admin
            provider:  in_memory
            anonymous: ~
            form_login:
                login_path: login
                check_path: login_check
            logout:
                path:   /logout
                target: /  

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

/src/MyBundle/Resources/Routing.yml

ies_cierva_encuesta_backend_admin:
    pattern:  /admin
    defaults: { _controller: Bundle:Default:admin }

login:
    pattern:  /login
    defaults: { _controller: Bundle:Login:login }

login_check:
    pattern:  /login_check  

logout:
    pattern:  /logout

SRC /捆綁/控制器/ LoginController.php

<?php

namespace ...

use ...

class LoginController extends Controller {

    public function loginAction(Request $request) {
        $session = $request->getSession();

        if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
            $error = $request->attributes->get(
                SecurityContext::AUTHENTICATION_ERROR
            );
        } else {
            $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
            $session->remove(SecurityContext::AUTHENTICATION_ERROR);
        }

        return $this->render(
            'Bundle:Security:login.html.twig',
            array(
                // last username entered by the user
                'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                'error'         => $error,
            )
        );
    }
}

我收到此錯誤:

“無法找到路徑“ / login_check”的控制器。也許您忘了在路由配置中添加匹配的路由?”

如果我沒記錯的話,這條路線不需要控制器...

http://symfony.com/doc/current/book/security.html中 ,提到

“確保您的check_path URL(例如/ login_check)在用於表單登錄的防火牆之后”。

但是/ login_check不在用於表單登錄的同一防火牆后面。

firewalls:
    admin_area:
        pattern:   ^/admin
        provider:  in_memory
        anonymous: ~
        form_login:
            login_path: login
            check_path: login_check
        logout:
            path:   /logout
            target: /  

在上述配置中,模式路徑“ login_check”與“ ^ / admin”模式不匹配。 相應地更改模式以使其起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM