标签: fosuserbundle

FOS用户捆绑安装错误

我已按照FOSUserBundle 的安装指南操作,并在步骤8中收到以下错误:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]
ServiceNotFoundException:服务"security.authentication.manager"依赖于不存在的服务"security.user.provider.concrete.fos_userbundle".

这是我的security.yml:

# app/config/security.yml
security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager

    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        FOS\UserBundle\Model\UserInterface:        sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            users:
                user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

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

        login:
            pattern:  ^/demo/secured/login$
            security: false

        secured_area:
            pattern:    ^/demo/secured/
            form_login:
                check_path: /demo/secured/login_check
                login_path: /demo/secured/login
            logout:
                path:   /demo/secured/logout
                target: /demo/

        main:
            pattern:           ^/
            form_login:
                provider:      fos_userbundle
                csrf_provider: form.csrf_provider
            logout: …
Run Code Online (Sandbox Code Playgroud)

php symfony fosuserbundle

1
推荐指数
1
解决办法
5899
查看次数

如何在Symfony 2表单字段中将默认值设置为FOSUserBundle中的身份验证用户名

我发现这个片段确实在创建时在我的表单中放置了一个默认值

 $builder
 ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => 'Default value'))
 ;
Run Code Online (Sandbox Code Playgroud)

如果我想用FOSUser捆绑中的身份验证人员替换"默认值"该怎么办?(返回true为is_granted("IS_AUTHENTICATED_REMEMBERED"))

我可以用twig文件检索该名称

 {{ app.user.username }} 
Run Code Online (Sandbox Code Playgroud)

我也用控制器方法完成了它

    $username=$this->container->get('security.context')->getToken()->getUser()->getUsername()   
Run Code Online (Sandbox Code Playgroud)

但我无法设法使我的形式工作!

我不确定我是否理解那个容器的东西......既不是如何在类和控制器之间传递变量......这可能是什么?

      ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => FOS\UserBundle\Model::$this->getUsername()))
Run Code Online (Sandbox Code Playgroud)

forms symfony fosuserbundle

1
推荐指数
1
解决办法
4629
查看次数

获取用户列表时出现SonataUserBundle错误

我已经安装了SonataAdminBundle,SonataUserBundle,FOSUserBundle和我自己的软件包,它扩展了FOSUserBundle.

mysite/admin/dashboard看起来不错,但是当我尝试获取用户列表(mysite/admin/sonata/user/user/list)时,我收到此错误:

类Application\Sonata\UserBundle\Entity\User不存在

为什么?我该怎么办?

UPD:

好的,现在我发现了这个问题,但现在又有了另一个问题.

找不到"GET/admin/sonata/user/user/list"的路由

为什么这种溃败不存在?应该放置这些路线的位置以及为什么在基本的SonataUserBundle安装中没有这些路线?

php symfony fosuserbundle symfony-2.1 sonata-admin

1
推荐指数
1
解决办法
4019
查看次数

注册覆盖 - FosUser Bundle(CSRF令牌无效)

当我使用标准逻辑时,它工作,注册没有任何问题.

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">


        {{ form_widget(form) }}

    <div>
        <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

但是,当我手动覆盖字段时,它看起来像是注册,但是,它没有注册,抛出错误是CSRF令牌无效.我是否必须添加其他任何内容才能使此代码生效?

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">


        {{ form_widget(form.username) }}
        {{ form_widget(form.email) }}
        {{ form_widget(form.plainPassword.first) }}
        {{ form_widget(form.plainPassword.second) }}
        {{ form_widget(form.name) }}
        {{ form_widget(form.Position) }}
        {{ form_widget(form.Country) }}
        {{ form_widget(form.notification) }}

    <div>
        <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

1
推荐指数
1
解决办法
2343
查看次数

FosUserBundle - 使用户名可以为空

Commuity,

我使用FosUserBundle,我的用户名有问题.

在我的页面上,您只需要一封电子邮件和一个密码.=>你可以使用用户名!(因为那样,我无法使用setUsername($ email)^^覆盖实体中的setEmail()函数

如果我在我的配置中使用它,我会收到以下错误.

fos_user:
    registration:
        form:
            validation_groups: [AppRegistration]
Run Code Online (Sandbox Code Playgroud)

错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null 
Run Code Online (Sandbox Code Playgroud)

我能做什么?

先感谢您!

null entity symfony-forms symfony fosuserbundle

1
推荐指数
1
解决办法
3015
查看次数

使用fosuserbundle覆盖更改密码表单

我正在使用FOSuserBundle,我已经覆盖了注册和登录表单,并且它们工作正常但是覆盖更改密码表单不起作用.它仍然从vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Form\Type\ChangePasswordFormType中的原始类中读取

ChangePasswordFormType.php

<?php

 namespace Boutique\UserBundle\Form\Type;

 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Security\Core\Validator\Constraint\UserPassword as OldUserPassword;
 use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;

 use FOS\UserBundle\Form\Type\ChangePasswordFormType as BaseType;

 class ChangePasswordFormType extends BaseType
 {
private $class;

/**
 * @param string $class The User class name
 */
public function __construct($class)
{
    $this->class = $class;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
    if (class_exists('Symfony\Component\Security\Core\Validator\Constraints\UserPassword')) {
        $constraint = new UserPassword();
    } else {
        // Symfony 2.1 support with the old constraint class
        $constraint = new OldUserPassword();
    }

    $builder->add('current_password', …
Run Code Online (Sandbox Code Playgroud)

php symfony fosuserbundle

1
推荐指数
1
解决办法
7556
查看次数

Sonata Admin Bundle + Sonata用户捆绑包:覆盖登录表单

我知道这个主题已经开放,但几个月之后,根本没有答案,当我尝试回答知道这位作者是否有任何解决方案时......我的评论被删除了.所以我想再次发布这个问题.

我正在使用我的管理SonataAdminBunbdle和SonataUserBundle.除了一些特定的东西,一切都工作得很好.

现在,我的问题.我想覆盖默认的登录表单.但是,即使我尝试的一切,也没有任何作用.

1)我试图覆盖FOSUserBundle登录表单,如官方文档中所述.

我把这个文件放在正确的路径上

{% extends "FOSUserBundle::layout.html.twig" %}

{% block fos_user_content %}
    AZERTY
{% endblock fos_user_content %}
Run Code Online (Sandbox Code Playgroud)

完全删除了原始登录表单,但没有任何更改,我仍然拥有相同的默认登录表单.

2)对SonataAdminBundle使用相同的方法,但是对于登录表单模板没什么用.

3)然后再一次为SonataUserBundle,但我没有找到任何覆盖登录表单模板.

我没有解决方案,这就是我要求帮助的原因.我找到了如何通过直接修改我的供应商文件来更改登录表单:

// vendor/sonata-project/user-bundle/Resources/views/Admin/Security/login.html.twig    

{% extends base_template %}

{% block content %}
    <div class="connection">
        <form action="{{ path("sonata_user_admin_security_check") }}" method="post">

            {% if error %}
                <div class="alert alert-error">{{ error|trans({}, 'SonataUserBundle') }}</div>
            {% endif %}

            <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

            <div class="control-group">
                <label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>

                <div class="controls">
                    <input type="text" id="username" name="_username" value="{{ last_username …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle sonata-admin sonata-user-bundle sonata

1
推荐指数
1
解决办法
4701
查看次数

找不到"GET/login"的路由

当我尝试使用错误的凭据登录时,它会显示"再次尝试,错误的凭据",但在输入正确的凭据后,它会显示错误找不到"GET /"的路由(来自" http:// localhost/bdayProj/web/app_dev. php/login ").以下是我的security.yml的配置

security:
encoders:
    FOS\UserBundle\Model\UserInterface: bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
    in_memory:
        memory: ~

    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    # disables authentication for assets and the profiler, adapt it according to your needs
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_token_generator: security.csrf.token_manager
        logout:    true
        anonymous: true
        # activate different ways to authenticate

        # http_basic: ~
        # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate

        # form_login: ~
        # http://symfony.com/doc/current/cookbook/security/form_login_setup.html

access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

1
推荐指数
1
解决办法
2060
查看次数

Symfony FOSUser Bundle错误必须配置路径“ fos_user”处的子节点“ db_driver”

我刚安装FOSUser捆绑包,并在运行时在AppKernelregistereBundles()函数中对其进行了初始化

console cache:clear
Run Code Online (Sandbox Code Playgroud)

它得到

[Symfony \ Component \ Config \ Definition \ Exception \ InvalidConfigurationException]必须配置路径“ fos_user”的子节点“ db_driver”。

我的理解是,除非或直到我不使用捆绑软件,否则它不应干扰应用程序流程。我不知道为什么到目前为止我对FOSUserBundle不做任何事情会得到这个问题

symfony fosuserbundle

1
推荐指数
1
解决办法
8520
查看次数

Symfony 3获取实体内的当前用户

我想知道是否有一种方法可以使用FOSUserBundle的实体User初始化属性所有者,以便它包含创建Post的用户

我想在构造函数中执行此操作,如下所示.

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="post")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
 */
class Post
{
  /* here are defined some attributs */
  /**
  * @ORM\ManyToOne(targetEntity="User", inversedBy="posts")
  * @ORM\JoinColumn(name="owner", referencedColumnName="id")
  */
  private $owner;

  public function __construct()
  {
    $this->owner = /* get current user */ ;
  }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法通过替换构造函数中的注释来做到这一点?

谢谢您的回答

orm symfony fosuserbundle

1
推荐指数
2
解决办法
6127
查看次数