Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Play中模型中的当前请求/用户详细信息!2.5_Scala_Playframework_Guice_Playframework 2.5 - Fatal编程技术网

Scala Play中模型中的当前请求/用户详细信息!2.5

Scala Play中模型中的当前请求/用户详细信息!2.5,scala,playframework,guice,playframework-2.5,Scala,Playframework,Guice,Playframework 2.5,我想在我的Play应用程序模型的深处访问当前用户,例如设置作者、检查用户是否可以实际保存此类型等 理想情况下,我希望使用Guice的@RequestScoped在我的请求中注入相同的UserIdentity,无论我在哪里需要它。然而,据我所知,这出戏!框架只支持@Singleton,不支持作用域。因此,我们要么在请求之间注入相同的UserIdentity,要么为我们请求的每个模型/util注入不同的用户标识。由于显而易见的原因,两者都不是gos 在游戏2.5中是否有一些方法可以利用这种行为 我尝

我想在我的Play应用程序模型的深处访问当前用户,例如设置作者、检查用户是否可以实际保存此类型等

理想情况下,我希望使用Guice的
@RequestScoped
在我的请求中注入相同的
UserIdentity
,无论我在哪里需要它。然而,据我所知,这出戏!框架只支持
@Singleton
,不支持作用域。因此,我们要么在请求之间注入相同的
UserIdentity
,要么为我们请求的每个模型/util注入不同的用户标识。由于显而易见的原因,两者都不是gos

在游戏2.5中是否有一些方法可以利用这种行为

我尝试过的其他事情

我试着结合使用Play的会话和缓存。但我的问题是会话是不可变的,所以我不能向它添加任何内容以在同一请求中重用

我看过很多auth框架,但它们似乎都专注于保护操作,而不是为我提供当前用户对象。

请查看,我在这里给出了一个在每个请求中获取当前用户的示例

在这种情况下,授权密钥在登录时分发,然后客户端在每次请求后都将其传递。

签出,在这里我给出了一个在每个请求中获取当前用户的示例


在这种情况下,授权密钥在登录时分发,之后每次请求时客户端都会传递它。

我的问题是我需要模型中的用户数据,你的答案似乎表明控制器中没有。为什么不将用户数据作为参数传递给你的模型?@marcospereira这正是我们使用依赖注入的原因。每个级别的方法都必须传递标识,直到我们最终找到真正想要使用它的方法。这也意味着我必须在控制器中实例化它,我不一定要这样做。理想情况下,我希望它在需要时被注入。我可能会含蓄地传递它,但我不认为这是理想的或惯用的。这里没有魔力。如果您需要当前用户位于呼叫链的某个深处,则需要在每次请求时将其发送到该位置。根据您使用的身份验证方法,您的策略将发生变化。不可简化的是,它必须以某种方式注入,所以选择您喜欢的任何方法。我的问题是我希望模型中的用户数据,你的答案似乎表明控制器中没有。为什么不将用户数据作为参数传递给你的模型?@marcospereira这正是我们使用依赖注入的原因。每个级别的方法都必须传递标识,直到我们最终找到真正想要使用它的方法。这也意味着我必须在控制器中实例化它,我不一定要这样做。理想情况下,我希望它在需要时被注入。我可能会含蓄地传递它,但我不认为这是理想的或惯用的。这里没有魔力。如果您需要当前用户位于呼叫链的某个深处,则需要在每次请求时将其发送到该位置。根据您使用的身份验证方法,您的策略将发生变化。不可简化的是,它必须以某种方式注入,所以请选择您喜欢的任何方法。您有没有找到解决方案?@pme我最终将我的UserIdentity类作为隐式val发送过来。感谢您的回复-我想是这样或Guice指定的。我也尝试了一下,但还没有得到答案:你找到解决方案了吗?@pme我最终通过隐式val发送了我的UserIdentity类。谢谢你的回复-我想是这样的,或者Guice指定的。我也试了一下,但还没有得到答案: