我开始为自己使用自定义securesocial并在自定义视图时遇到一个问题 - 我试图在窗口顶部创建持久工具栏模板,文字如下:
Welcome,
@if(user != null) {
@user.firstName @user.lastName
} else {
@Messages("Guest")
}
此工具栏在自定义主视图中生成:
@(title: String, user: securesocial.core.Identity = null)(content: Html)
从代码中调用(index.scala.html示例):
@main("App test",user)
尝试使用自定义视图时遇到问题 - 尤其是passwordChange.scala.html
。此视图是从securesocial(PasswordChange
)提供的标准控制器调用的,然后将控制传递给我自己的插件(MyViews
,它具有渲染视图的简单实现并扩展TemplatesPlugin
),不会t具有关于用户上下文的任何信息 - 因此即使用户已登录,在密码更改期间,工具栏将显示“欢迎,来宾”,并且相应的菜单将显示例如“登录”和“注册”,尽管用户在登录期间登录密码更改。
任何人都可以为我提供解决方案,将用户信息传递给我的自定义视图(最好不要重写内置控制器中的securesocial)吗?
答案 0 :(得分:0)
看起来user
为空。你在代码中填充它吗?
您还需要在user
模型中添加查询才能找到它。例如,检查一下:
答案 1 :(得分:0)
解决方案非常简单和流畅 - 而不是从HTTP Context对象(这部分代码中不可用)填充用户,我从隐式请求填充用户,然后将变量传递给我的自定义模板:
def getPasswordChangePage[A](implicit request: SecuredRequest[A], form: Form[ChangeInfo]): Html = {
val userName = request.user
views.html.secure.Registration.passwordChange(request, userName, form)
}
上面的代码是MyViews.scala代码的一部分。