登录后从Symfony清空用户对象

时间:2016-01-27 10:37:23

标签: symfony login twig

我使用Symfony和Twig创建了一个登录页面。现在,我尝试在登录后检索用户名。但似乎我从SecurityController返回的用户对象是空的,因此Twig有渲染问题。我需要做什么才能获得UserObject?

security.yml

security:

    encoders:
        UserBundle\Entity\User:
            algorithm: bcrypt

    providers:
        in_memory:
            memory: ~

        user_db_provider:
            entity:
                class: UserBundle:User
                property: username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~

            http_basic: ~
            provider: user_db_provider

            form_login:
                login_path: /login
                check_path: /login_check

            logout:
                path: /logout
                target: /

SecurityController

类Sec​​urityController扩展Controller {

    /**
     * @Route("/login", name="login_form")
     */
    public function loginAction(){

        $authenticationUtils = $this->get('security.authentication_utils');
        $error = $authenticationUtils->getLastAuthenticationError();

        $user = $this->getUser();


        return $this->render(':security:login.html.twig',
                array(
                        'user' => $user,
                        'error'=> $error,
                )
        );
    }

/**
 * @Route("/login_check", name="login_check")
 */
public function loginCheckAction() {}

/**
 * @Route ("/logout", name="logout")
 */
public function logoutAction(){}}

用户(已实施Serialize,getter / setter方法)

/**
 * @Table("users")
 * @Entity
 */
class User implements UserInterface, \Serializable {

        /**
         * @Column(name="id", type="integer")
         * @Id
         * @GeneratedValue(strategy="AUTO")
         */
        private $id;

        /**
         * @Column(length=25)
         */
        private $username;

        /**
         * @Column(length=64)
         */
        private $password;

        /**
         * @var array
         * @Column(name="roles", type="json_array")
         */
        private $roles = array();

枝条 - 模板

    {% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    <div class="form-group">
        {{ user.username }}
        <a href="{{ path('logout') }}">Logout</a>
    </div>
{% else %}
<form class="navbar-form navbar-left" action="{{ path('login_check') }}" method="post">
    <div class="form-group">
        <input type="text" class="form-control" name="_username" placeholder="Username"/>
        <input type="password" class="form-control" name="_password" placeholder="Password"/>
        <button type="submit" class="btn btn-default">Log In</button>
    </div>
</form>
{% endif %}
{% if error is defined %}
<p class="navbar-text navbar-right">{{ error.messageKey|trans(error.messageData, 'security')}}</p>
{% endif %}

1 个答案:

答案 0 :(得分:1)

Symfony具有全局模板变量check this。 使用方法:

{{ app.user.username }}