BT

フォーム認証の拡張

| 作者: Jonathan Allen フォローする 612 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2011年7月18日. 推定読書時間: 2 分 |

原文(投稿日:2011/07/12)へのリンク

巨大で複雑なフレームワークを使えと言われれば、それが自分が作ったものであっても、使いたがらないだろう。しかし、2、3のクラスだけで出来ている小さなライブラリを使うと一気に仕事が楽になる場合がある。このようなもののひとつがFormsAuthenticationExtensionsと呼ばれるプロジェクトだ。

MVC3のようなモダンなフレームワークでもフォーム認証は依然として、公開サイトの認証方法として推奨されている由緒ある方法だ。メンバシップとロールプロバイダと合わせて使えば、構成も簡単であり柔軟性もある。最も単純な場合、フォーム認証はユーザ名またはIDが暗号化され保存されたクッキーを使う。ユーザに関するこの他の方法は下記のような他の方法でアクセスしなければならない。

  • Membership.GetUserを呼ぶ。デフォルトの実装を使うとデータベースへのラウンドトリップが発生する。これは確かな方法だが、権限の取得はやりにくく、ページライフサイクル上での権限の保管場所がデバッグを難しくする。
  • 追加情報をセッションに保持する。この方法だとセッション状態を保持しなければならない。小さなサイトなら問題無いが、複数のウェブサーバを利用しなければならない場合は問題が発生する。

FormsAuthenticationExtensionsが提供するのは第3の方法だ。メンバシップキャッシュを作成したり、セッションサーバの準備をするかわりに、認証クッキーに追加情報を保存できる。下記は小さなMVCプロジェクトでこのライブラリを試してみたサンプルだ。このコードはAccountController.LogOnのデフォルトのコードを置き換える。

  

//FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

var ticketData = new NameValueCollection();
ticketData["Name"] = model.UserName; ticketData["Key"] = membershipUser.ProviderUserKey.ToString(); ticketData["Email"] = membershipUser.Email;

new FormsAuthentication().SetAuthCookie(model.UserName, model.RememberMe, ticketData);

このプロジェクトの創始者からの警告を一言。

サイズは常に問題になります。

この方法で保存した情報はフォームチケットに埋め込まれます。チケットは暗号化されユーザのブラウザに送られます。これ以後のすべてのリクエクトにおいて、このクッキー全体が送られ復号化されます。従って、大きいデータを保存するのは明らかに問題に成ります。2,3のシンプルな値だけを保存する必要があります。

取り立てて言うほどの依存性もないこのFormsAuthenticationExtensionsを使うのはNuGetパッケージをロードするのと同じくらい簡単だ。少しコードを変えるだけでいい。

もしあなたが他にも便利なライブラリを知っているなら、この記事のコメント欄やページトップの“Contribute News”リンクを使って教えてほしい。

if($("#home_

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT