标签: fosuserbundle

FOSFacebookBundle和FOSUserBundle一起工作

我正在开发一个使用Symfony2的网站.

我成功安装了FOSUserBundle.现在我想安装FOSFacebookBundle,以便它可以与FOSUserBundle一起使用.

我真的不了解整个"提供者用户"的事情.在FOSFacebookBundle文档中,它说"7.可选择定义自定义用户提供程序类并将其用作提供程序或定义登录路径",我应该这样做以使这两个程序包相互协作吗?那个有什么用?

我想让这两个人互相帮助.

facebook bundles symfony fosuserbundle

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

无需重新设置即可更改远程用户的角色

我正在尝试使用FOSUserBundle更改用户的角色.问题是:如果用户同时登录,他必须重新登陆以查看新角色.

有解决方案吗

symfony fosuserbundle

8
推荐指数
2
解决办法
4926
查看次数

带前缀的FOSUserBundle注销不起作用

我对symfony2和FOSUserBundle有一个非常奇怪的问题.

我可以使用/ en/logout注销,但不能使用/ nl/logout或/ fr/logout注销.

当我尝试使用nl或fr注销时,我得到:

You must activate the logout in your security firewall configuration.
Run Code Online (Sandbox Code Playgroud)

虽然我配置了它.我似乎无法理解为什么/ en/logout工作而其余部分没有.

这是我的代码:

security.yml

security:
providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email

encoders:
    FOS\UserBundle\Model\UserInterface: sha512

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            check_path: fos_user_security_check
            default_target_path: /%locale%/login
            always_use_default_target_path: true
            failure_path:   /%locale%/login
        logout:
            path: /%locale%/logout
            target: homepage
        anonymous:    true
Run Code Online (Sandbox Code Playgroud)

使用routing.yml

user bundle > FOS
    fos_user_security:
        resource: "@FOSUserBundle/Resources/config/routing/security.xml"
        prefix: /{_locale}
        requirements:
            _locale: fr|nl|en
Run Code Online (Sandbox Code Playgroud)

调节器

    class LoginController extends Controller {

    /**
     * @Route("{_locale}/logout-test", name="logout", defaults={"_locale"="en"} , requirements = {"_locale" …
Run Code Online (Sandbox Code Playgroud)

localization symfony fosuserbundle

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

在创建时将新FOSUserBundle用户添加到默认组

我正在构建我的第一个严肃的Symfony2项目.我正在为我的用户/组管理扩展FOSUserBundle,我希望新用户自动添加到默认组.我想你只需要像这样扩展User实体构造函数:

/**
 * Constructor
 */
public function __construct()
{
    parent::__construct();
    $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
    // Get $defaultGroup entity somehow ???
    ...
    // Add that group entity to my new user :
    $this->addGroup($defaultGroup);
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是如何首先获得我的$ defaultGroup实体?

我尝试在实体中使用实体管理器,但后来我意识到它是愚蠢的,Symfony抛出错误.我搜索了这个,但发现没有真正的解决方案,除了可能为此设置服务 ......虽然这对我来说似乎很不清楚.

symfony fosuserbundle

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

如何从eventlistener获取从AJAX调用的userid

我正在使用symfony2和FOSUserBundle.

通常,我可以从Controller获取用户数据

$user = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)

要么

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

但是现在,我想从eventlistner获取从Ajax调用的userdata.

可能吗?或不?

我的来源在这里.

    namespace Acme\MemberBundle\EventListener;

    use ADesigns\CalendarBundle\Event\CalendarEvent;
    use ADesigns\CalendarBundle\Entity\EventEntity;
    use Doctrine\ORM\EntityManager;

    class CalendarEventListener
    {
        private $entityManager;

        public function __construct(EntityManager $entityManager)
        {
            $this->entityManager = $entityManager;
        }

        public function loadEvents(CalendarEvent $calendarEvent)
        {
            $startDate = $calendarEvent->getStartDatetime();
            $endDate = $calendarEvent->getEndDatetime();


           $user = $this->container->get('security.context')->getToken()->getUser();//it doesnt work

            // load events using your custom logic here,
            // for instance, retrieving events from a repository

            $companyEvents = $this->entityManager->getRepository('UserBundle:MutorSche')
                    ->createQueryBuilder('company_events')
                    ->where('company_events.event_datetime BETWEEN :startDate and :endDate')
                    ->setParameter('startDate', $startDate->format('Y-m-d H:i:s'))
                    ->setParameter('endDate', $endDate->format('Y-m-d …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

8
推荐指数
3
解决办法
1万
查看次数

Symfony2访问服务中的用户和教义

我在很多很多控制器操作中运行相当于这段代码,基本上它抓住用户的用户名,如果该用户名附加到博客实体,它将允许用户查看博客实体:

    $em = $this->getDoctrine()->getManager();
    $user = $this->get('security.context')->getToken()->getUser();
    $entities = $em->getRepository('MySiteBundle:Blog')->findBy(array('user' => $user));

    return $this->render('MySiteBundle:Blog:index.html.twig', array(
        'entities' => $entities,
Run Code Online (Sandbox Code Playgroud)

我想将它转移到服务中,这样我就可以减少代码重复.我想避免在控制器中尽可能多地使用逻辑.

话虽这么说,我不知道如何在服务中访问用户会话和学说.

这是我的services.yml:

mysite.user.blog:
    class: MySite\SiteBundle\Services\BlogUser
Run Code Online (Sandbox Code Playgroud)

这就是我试图在控制器中调用它的方式:

public function testAction() {
    $response = $this->get('mysite.user.blog');
    return new Response($response);
}
Run Code Online (Sandbox Code Playgroud)

我确实尝试使用事件订阅者/侦听器标记,但这似乎没有完成我想要的任务.

这是我完全可怕的服务尝试.没有使用构造函数我无法得到任何响应.

namespace MySite\SiteBundle\Services;

use MySite\SiteBundle\Entity\Blog;

class BlogUser {

    protected $entities;

    public function __construct(){
        $em = $this->getDoctrine()->getManager();
        $user = $this->get('security.context')->getToken()->getUser();
        $this->entities = $em->getRepository('MySiteBundle:Blog')->findBy(array('user' => $user));
    }
}
Run Code Online (Sandbox Code Playgroud)

我是以完全错误的方式来做这件事的吗?有没有更好的方法让我失踪?

编辑/回答:

修改了我的命名约定:

//services.yml
mysite.user.blog.entities:
    class: Mysite\SiteBundle\Services\BlogUser
    arguments: ["@doctrine.orm.entity_manager", "@security.context"]
Run Code Online (Sandbox Code Playgroud)

在控制器动作中:

$userEntities = $this->get('mysite.user.blog.entities');
$entities …
Run Code Online (Sandbox Code Playgroud)

service controller symfony fosuserbundle

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

如何在成功注册时分配角色?

我正在使用fos用户捆绑和pugx多用户捆绑.我已经阅读了所有文档,我是Symfony的新手.在pugx多用户包中,每个点都有一个样本,但只有一个:成功注册.

  • 用于生成表单的覆盖控制器样本=> ok
  • 用于生成表单的覆盖模板的示例=> ok
  • 覆盖成功注册样本的样本=>没有.

这是我的代码:

class RegistrationController extends BaseController
{
    public function registerAction(Request $request)
    {   
        $response = parent::registerAction($request);
        return $response;
    }   

    public function registerTeacherAction()
    {   
        return $this->container
            ->get('pugx_multi_user.registration_manager')
            ->register('MyBundle\Entity\PersonTeacher');
    }   

    public function registerStudentAction()
    {   
        return $this->container
            ->get('pugx_multi_user.registration_manager')
            ->register('MyBundle\Entity\PersonStudent');
    }   
}
Run Code Online (Sandbox Code Playgroud)

问题是->get('pugx_multi_user.registration_manager')返回经理.在fos用户覆盖控制器帮助中,他们得到a form或a form.handler.我很难将这些与pugx_multi_user管理器"链接"起来.

我应该在registerTeacherAction()为教师设置角色时设置什么代码,以及registerStudentAction()成功注册设置学生角色?

controller symfony fosuserbundle pugxmultiuserbundle

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

symfony2如何向用户名添加验证规则?

由于我正在扩展BaseUser,我的用户实体中没有属性$ name,如何向其添加验证,我可以向该实体添加属性$ username吗?是否会混淆或覆盖某些功能或验证或本机提供给用户类的?

我解决了这个问题FOSUserBundle - 验证用户名,密码或电子邮件字段,但因为我使用了一堆对我不起作用的注释验证.

后续问题 - 我在fosUSerBundle XML文件中看到用于验证用户本身是一个使用截取用户名的检查器,我没有得到该功能,如果我尝试添加,我会直接看到SQL错误消息与现有用户同名的用户.这是因为我使用注释会一起覆盖XML验证文件吗?

use BizTV\UserBundle\Validator\Constraints as BizTVAssert;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;


use FOS\UserBundle\Model\User as BaseUser;

use Doctrine\ORM\Mapping as ORM;

use BizTV\BackendBundle\Entity\company as company;


class User extends BaseUser implements AdvancedUserInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;  

//TODO: Add regex on $name for a-z, A-Z, 0-9 and _ (underscore) 
//TODO: Add constraint on $name    * @BizTVAssert\NameExists    (and finish coding this constraint)

    /**
    * @var object BizTV\BackendBundle\Entity\company
    *  
    * …
Run Code Online (Sandbox Code Playgroud)

validation username symfony fosuserbundle

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

fosuserbundle找不到"GET/login /"的路线

我最近使用composer更新了symfony2,现在我无法登录.这是相关文件.如果需要更多数据,请与我们联系.

应用程序/配置/ routing.yml中

app_admin:
resource: "@AppAdminBundle/Resources/config/routing.yml"
prefix:   /admin
host: dashboard.muchomonitor.com

app_website:
resource: "@AppWebsiteBundle/Resources/config/routing.yml"
prefix:   /
host: www.muchomonitor.com

app_monitor:
resource: "@AppMonitorBundle/Resources/config/routing.yml"
prefix:   /
host: dashboard.muchomonitor.com

fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
host: dashboard.muchomonitor.com

fos_user_security_reset:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /login
host: dashboard.muchomonitor.com
Run Code Online (Sandbox Code Playgroud)

应用程序/配置/ security.yml

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

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username
    user:
        entity: { class: App\MonitorBundle\Entity\User, property: username }

firewalls:
    main:
        pattern: ^/
        provider: user
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            login_path: fos_user_security_login
            check_path: fos_user_security_check
            default_target_path: /
        logout:       true
        anonymous:    true …
Run Code Online (Sandbox Code Playgroud)

routing symfony fosuserbundle

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

"security.firewalls.form_login"下无法识别的选项"csrf_provider"

我正在尝试按照此处的教程安装FOSUserBundle

当我在第7步时,我尝试更新ORM运行的数据库模式

php app/console doctrine:schema:update --force

但出现错误

InvalidConfigurationException: Unrecognized options "csrf_provider" under "security.firewalls.form_login"
Run Code Online (Sandbox Code Playgroud)

这是我的防火墙:

firewalls:
        main:
        pattern: 
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true
Run Code Online (Sandbox Code Playgroud)

我能做什么?我没有设置模式因为,如果我设置类似的东西

        pattern: ^/
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

InvalidTypeException:路径"security.firewalls.pattern"的类型无效.预期的数组,但得到了字符串

更新:

csrf_protection已启用,但由于某些原因,我不明白,不起作用.我试图"重置"它,禁用和启用,现在它可以正常工作.在我的项目中,我启用它

csrf_protection: ~
Run Code Online (Sandbox Code Playgroud)

csrf symfony fosuserbundle

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