首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HWIOAuth + FOSUser密码重定向

HWIOAuth + FOSUser密码重定向
EN

Stack Overflow用户
提问于 2015-10-15 15:08:41
回答 2查看 69关注 0票数 0

我使用这个版本来实现这两个包。但是,我希望用户为他的帐户设置一个密码,因此在成功的身份验证和用户创建之后,他将被更改为一个表单,在那里他将输入该密码。因为FOSUBUserProvider是一个服务,所以我想再做一个处理密码表单的服务。我将第二个服务注入到第一个服务中,但是我需要@templating,我已经将它设置为一个参数,但是我不知道如何接受它,而且我收到了他失踪的警告。我该怎么解决这个问题?

代码语言:javascript
复制
#   /FOSUBUserProvider
$passwordSetter = Controller::get('register_social_password_picker');

我知道它需要第二个参数(对于templating),我从哪里获得它呢?还是我走错路了?

代码语言:javascript
复制
class RegisterPassword
{

    protected $user;
    protected $templating;

    public function __construct($user, $templating)
    {
        $this->user = $user;
        $this->templating = $templating;
    }
...
}

services.yml

代码语言:javascript
复制
my_user_provider:
    class: AppBundle\Security\Core\FOSUBUserProvider
    arguments: [@fos_user.user_manager,{facebook: facebook_id, twitter: twitter_id, linkedin: linkedin_id}, "@register_password" ]

register_password:
    class:        AppBundle\Service\RegisterPassword
    arguments:    ["@templating" ]

LE: services.yml

代码语言:javascript
复制
register_password:
    class:        AppBundle\Service\RegisterPassword
    arguments:    [ setMailer, ["@templating"] ]


class RegisterPassword
{
    protected $user;
    protected $templating;

    public function __construct( )
    {

    }

    public function setPassword(User $user, $templating)
    {
        $this->templating = $templating;
...
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-15 15:22:19

您的问题是服务构造函数需要两个参数($user和$templating),并且只传递一个参数(@模板)。这些参数是在构建服务时传递的,因此我的猜测是,您不希望$user成为构造函数的参数(此时您不知道哪个用户将使用该服务),所以只需传递$templating参数,您可以稍后使用不同的调用添加用户。

由于这似乎会产生循环引用问题,因此可以使用以下三种策略中的一种:

  • 注入完整的服务容器,并在需要时获得模板服务(不推荐)
  • 使用setter注入(注入/类型.),因为它在服务构建后调用setter方法,因此我猜循环引用将被避免(不是100%确定)。
  • 如果这不起作用,则创建setter方法,但不要在服务构造点调用它,而是在您想要使用服务时调用它。
票数 0
EN

Stack Overflow用户

发布于 2015-10-23 10:15:11

但是,我尝试的方法有点不太好,登录后的重定向可以很容易地在security.yml>security>firewalls>firewall_name>default_target_path in中设置如下:

代码语言:javascript
复制
default_target_path: /redirect
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33152141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档