首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SecureSocial 3.0-M3自定义登录查看播放2.3.9

SecureSocial 3.0-M3自定义登录查看播放2.3.9
EN

Stack Overflow用户
提问于 2015-06-08 07:36:28
回答 1查看 217关注 0票数 1

我正在尝试使用最新版本的SecureSocial 3.0-M3构建一个自定义登录视图,我已经为此挣扎了几天。

正如secureSocial Google上的fotis所建议的那样,我创建了一个扩展ViewTemplates并覆盖所需方法的MyViewTemplates类:

代码语言:javascript
复制
package controllers
import play.api.mvc.{RequestHeader, Request}
import play.twirl.api.Html

import securesocial.core.{BasicProfile, RuntimeEnvironment}
import play.api.data.Form
import play.api.i18n.Lang
import play.api.mvc.Controller
import play.twirl.api._
import securesocial.controllers.ChangeInfo
import securesocial.controllers.RegistrationInfo
import securesocial.controllers.ViewTemplates
import securesocial.core.RuntimeEnvironment
import play.api.mvc.Action
import play.api.Logger
import views.html.index

/**
 * If no license is here then you can whatever you like!
 * and of course I am not liable
 *
 * Created by fotis on 21/08/14.
 */
class MyViewTemplates(env:RuntimeEnvironment[_]) extends ViewTemplates{

  implicit val implicitEnv = env

  override def getLoginPage(form: Form[(String, String)],msg: Option[String] = None)(implicit request: RequestHeader, lang: Lang): Html = {
    Logger.debug("Redirecting to custom view")
    views.html.login(form, msg)(request, lang, env)

  }

  override def getSignUpPage(form: Form[RegistrationInfo], token: String)(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.Registration.signUp(form, token)(request, lang, env)
  }

  override def getStartSignUpPage(form: Form[String])(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.Registration.startSignUp(form)(request, lang, env)
  }

  override def getStartResetPasswordPage(form: Form[String])(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.Registration.startResetPassword(form)(request, lang, env)
  }

  override def getResetPasswordPage(form: Form[(String, String)], token: String)(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.Registration.resetPasswordPage(form, token)(request, lang, env)
  }

  override def getPasswordChangePage(form: Form[ChangeInfo])(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.passwordChange(form)(request, lang, env)
  }

  override def getNotAuthorizedPage(implicit request: RequestHeader, lang: Lang): Html = {
    securesocial.views.html.notAuthorized()(request, lang, env)
  }


}

我添加了一个登录页面:

代码语言:javascript
复制
@(loginForm: play.api.data.Form[(String,String)], errorMsg: Option[String] = None)(implicit request: play.api.mvc.RequestHeader, lang: Lang, env:securesocial.core.RuntimeEnvironment[_])
@import securesocial.core.providers.UsernamePasswordProvider.UsernamePassword
@main(Messages("securesocial.login.title")) {
    <div class="page-header">
        <h1>@Messages("securesocial.login.title")</h1>
    </div>

    @errorMsg.map { msg =>
        <div class="alert alert-error">
            @Messages(msg)
        </div>
    }

    @request.flash.get("success").map { msg =>
        <div class="alert alert-info">
            @msg
        </div>
    }

    @request.flash.get("error").map { msg =>
        <div class="alert alert-error">
            @msg
        </div>
    }


    @defining( env.providers.values.filter( _.id != UsernamePassword) ) { externalProviders =>


        @env.providers.get(UsernamePassword).map { up =>
            <div class="clearfix">
                @if( externalProviders.size > 0 ) {
                    <p>@Messages("securesocial.login.useEmailAndPassword")</p>
                } else {
                    <p>@Messages("securesocial.login.useEmailAndPasswordOnly")</p>
                }

                @securesocial.views.html.provider("userpass", Some(loginForm))
            </div>
        }
    }
}

但是这个页面从来没有被调用过。显示的始终是默认的SecurSocial登录页面。

我遗漏了什么?有谁有这个版本的SecureSocial和自定义登录视图的完整代码示例吗?

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-08 18:29:23

我必须在自定义的viewTemplates中重写RuntimeEnvironment:

代码语言:javascript
复制
override lazy val viewTemplates: ViewTemplates = MyViewTemplates
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30703517

复制
相关文章

相似问题

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