SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Groovy+GrailsでRailsなWeb開発

GrailsのAuthenticationプラグインによる認証

Groovy+GrailsでRailsなWeb開発 第5回

authenticationにアクセスする

 では、早速authenticationを使ってみましょう。authenticationは、ユーザーに関する情報を、Grailsにデフォルトで用意されているデータベース機能を使い保管し管理します。通常なら「では、まずデータベースの準備を……」となるところですが、authenticationではそうした作業は不要です。

 とりあえず、authenticationの認証機能を使ってみましょう。「grails run-app」でWebサーバーを起動し、アプリケーションを公開します。そしてWebブラウザから、次のようにアクセスしてください。

http://localhost:8080/アプリケーション名/authentication

 今回は「gapp」アプリケーションにインストールしましたから、アクセス先は「http://localhost:8080/gapp/authentication」となります。アクセスすると、画面に「Authentication」というページが表示されます。

図3 Authenticationの画面。ログインとサインアップのフォームが用意されている。
図3 Authenticationの画面。ログインとサインアップのフォームが用意されている。

 このページは、Authenticationプラグインによって自動生成されたものです。このページでは、「Log in」と「Sign up」の2つのフォームが用意されています。これらはそれぞれ次のような働きをします。

  • Log in
  •  ログインを行うものです。User IDとPasswordに、それぞれユーザーのIDとパスワードを入力して「Log in」ボタンを押すと、それぞれの値をデータベースで確認し、正しく入力されていれば認証しログイン状態となります。IDとパスワードは、あらかじめ登録されている必要があります。

  • Sign up
  •  ユーザーIDの登録を行うためのものです。ここでUser ID、Email、Password、Confirm passwordのそれぞれを入力します(Confirm passwordは、Passwordの確認用フィールドです。PasswordとConfirm passwordに同じパスワードを入力します)。入力後、[Sign up]ボタンを押すと、フォームに記入したユーザー情報が登録され、そのIDでログインします。

 まずは、Sign upでユーザーIDをいくつか登録してみてください。注意が必要なのは、User IDは6文字以上40文字以内でなければいけない、という点でしょう。またEmailも、正しい形式のメールアドレスを記述する必要があります。

 ログインすると、authentication/indexにアクセスされ、ログインしたことが確認されます。またこのページにある[Log out]ボタンを押すとログアウトします。サインアップができたら、今度はログインフォームを使い、登録されたユーザーIDでログインできるか試してみましょう。

図4 ログインするとこのようなページに移動し、現在ログインしているID名が表示される。
図4 ログインするとこのようなページに移動し、現在ログインしているID名が表示される。

 とりあえず、Authenticationプラグインによる認証機能を、簡単な操作で動かし確認できることはこれで分かりました。といっても、このままでは自分のアプリケーション内で使うにはちょっと不便です。では、次にAuthenticationの機能を各自のアプリケーションで利用してみることにしましょう。

ログインページの作成

 実際に認証を使ったログイン機能のサンプルを作成してみます。ここでは、gappアプリケーションに「auth」というコントローラーを用意して、そこにサンプルを作成してみることにします。コマンドプロンプトでgappアプリケーションのディレクトリにカレントディレクトリを移動し、

grails create-controller auth

 このように実行してauthコントローラーを作成しましょう。そして、自動生成されたAuthController.groovyを修正し、必要なビューを用意して、簡単なログイン機能を実装します。ここでは、ごくシンプルなものとして「index」と「login」という2つのページを用意し、loginからログインをしてindexを表示する、ということを行います。

 まずは、loginページから作成しましょう。「views」内に「auth」というフォルダが生成されていますので、この中に新たに「login.gsp」というファイルを作成し、次のように記述してください。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Grails Login</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <style type="text/css">
            h1 {background:#AAAAFF; font-size: 12pt; padding: 3px;}
            h2{font-size: 12pt; font-weight: bold;}
            p{color:#000066; font-size:10pt;}
        </style>
    </head>
    <body>
        <h1>Grails Auth Log in</h1>
        <h2>ユーザー名とパスワードを入力してください。</h2>
        <auth:form authAction="login"
                success="[controller:'auth', action:'index']"
                error="[controller:'auth', action:'login']">
            <table>
            <tr><td>User ID:</td><td><g:textField name="login"/></td></tr>
            <tr><td>Password:</td><td><g:passwordField name="password"/></td></tr>
            <tr><td></td><td><g:submitButton name="Log in"/></td></tr>
        </auth:form>
    </body>
</html>
図5 loginのページ。User IDとPasswordを入力するフォームがある。ただし、まだコントローラーができてないので、この段階では動かないので注意!
図5 loginのページ。User IDとPasswordを入力するフォームがある。ただし、まだコントローラーができてないので、この段階では動かないので注意!

 ここでは、入力用の簡単なフォームだけが用意されています。が、よく見るとフォームのタグが少々変わっていますね。ログイン用のフォームは、次のようなタグを使って記述します。

<auth:form authAction="login"
        success="[controller:'コントローラー', action:'アクション']"
        error="[controller:'コントローラー', action:'アクション']">

    ……ここにコントロール類のタグを書く……

</auth:form>

 この<auth:form>は、Authenticationプラグインによって用意されるカスタムタグです。このタグでは「authAction」「success」「error」といった属性が用意されています。これらは、それぞれ以下の働きをします。

<auth:form>の属性
属性 説明
authAction フォームの送信先となるAuthenticationのアクションを指定します。ログインでは「login」を指定します。
success アクションの実行に成功したときの挙動を指定します。これはcontrollerとactionという2つの要素を持つマップとして用意されます。これで、コントローラー名とアクション名を指定すると、認証後、指定のアクションが実行されます。
error アクションの実行に失敗したときの挙動を指定します。やはりcontrollerとactionという2つの要素を持つマップとして用意します。

 この<auth:form>~</auth:form>タグ内に、フォームのタグを記述します。ここでは、ユーザーID、パスワード、送信ボタンの3つが次のような形で用意されています。

<g:textField name="login"/>
<g:passwordField name="password"/>
<g:submitButton name="Log in"/>

 ここで注意すべきは、ユーザーIDとパスワードを入力するフィールドの名前です。これらは、必ず「login」「password」としておきます。これらの名前が正しく設定されていないと、Authenticationのコントローラーが正しく値を取り出せず認証できません。

次のページ
ログインして表示されるページ

この記事は参考になりましたか?

Groovy+GrailsでRailsなWeb開発連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4106 2009/07/22 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー