登录后从Symfony清空用户对象



我用Symfony和Twig创建了一个登录页面。现在,我正在尝试在登录后检索用户名。但似乎,我从安全控制器返回的用户对象是空的,因此 Twig 存在渲染问题。我需要做什么才能获取该用户对象?

安全.yml

security:
    encoders:
        UserBundleEntityUser:
            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: /

安全控制器

类 安全控制器扩展控制器{

    /**
     * @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(){}}

用户(实现序列化、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 %}

Symfony有全局模板变量检查这一点。用:

{{ app.user.username }} 

最新更新