1

こんにちは、プログラマーの皆さん。以前の質問からわかるかもしれませんが、私は Scala/Lift の世界ではまったくの初心者です。したがって、些細な質問をするかもしれません。

ユーザーを認証するためのカスタム ログイン フォームを作成したい (ユーザーはデータベース経由ではなく、代わりに Google Protocol Buffer を介した API 呼び出し経由で認証される)。 API。

これまでのところ、私は自分のページを思いつきましたlogin.html

<div id="loginContainer" class="loginMainContainer centerContainer">
      <div class="loginInputWrapper">
        <input type="text" name="loginName" id="loginName" class="txtLogin" />
      </div>
      <div class="loginInputWrapper">
        <input type="password" name="loginPassword" id="loginPassword" class="pwLogin" />
      </div>
      <div class="buttonWrapper loginButtonWrapper">
        <button type="submit" class="hiddenButton qsbfont">Login</button>
      </div>
    </div>

loginNameそして、loginPasswordフィールドの値を取得したいと思います。これを達成する(最良の)方法はどれですか?

このクラスで取得してパッケージに追加しようとしましたが、snippetこれら 2 つを結び付ける方法がわかりません。ここに私のスニペットがあります:

object MyAuthentication {
  def authentication(name: String, password: String) = {

    def validate(user: String, password: String): Boolean = {
      if(user == "tac" && password == "tac") true else false
    }

    def createUser(loggedIn: Boolean): Boolean = {
      if (loggedIn) {
        val user = new MyUser
        user.setName(name)
        user.setUID(1111)
        user.setLoginState(loggedIn)
        user.setLanguage("en_EN")
      }
      loggedIn
    }

    if (createUser(validate(name, password)))
      <span>loggedIn</span>
    else
      <span>failure!</span>

  }

  def render = SHtml.onSubmitList(credentials => {
    authentication(credentials(0), credentials(1))
  })

}

それで、そのようなことは可能ですか?この 2 つを一緒に配線するにはどうすればよいですか?

4

2 に答える 2

1

完全な答えではありませんが、どこから始めるべきかの指針になることを願っています:

この Ajax フォームのデモ を確認してください。関連する scala ソースはhereで、テンプレート ソースはhereです。

これは、あなたがやろうとしていることと似ているようです。それらがすべてを結び付ける方法は、フォームのフィールドを でラップすること<lift:snippet type="AjaxForm:show" form="post">です。次に、サーバー側で、showメソッドはテンプレート xml を受け取り (Group引数の型として使用しますが、 と交換できると確信していますNodeSeq)、フィールドを Ajax 対応フィールドにバインドします。

デモのソースに注意してくださいimport SHtml._...率直に言って、これを行うデモは嫌いです。なぜなら、リフトの初心者にとって、メソッドがどこから来ているのかを理解するのが難しくなるからです。untrustedSelectselectsubmit、 などのメソッドは、ajaxCallそのインポートから来ています。

最後に、Lift 関連の質問については、SO よりもLift の Google グループ ページの方が役立つと思います。私はリフトの第一人者ではありませんが、そこにいる人々です。幸運を!

于 2012-10-24T11:42:07.100 に答える
0

これは、フォームの作成方法に関するページへのリンクですhttp://simply.liftweb.net/index-4.1.html#toc-Section-4.1

注意すべき点は、内部に div タグがあってはならない<div class="lift:LoginForm">code goes here</div>ということです。

于 2013-01-04T08:24:32.380 に答える