SHOEISHA iD

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

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

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク

もう一つのASP.NET 「ASP.NET MVC」を知る(後編)

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク(2)


  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NET MVC における認証

 ASP.NET MVCでは従来のASP.NETのMembership機能などが利用できます。Preview 3まではちょっとした工夫が必要でしたが、Preview 4からはプロジェクトテンプレートでMembership機能を利用した”AccountControllerクラス”というControllerクラスと、”Views/Account”というViewPageが追加されました(図1)。これにより、ユーザーはプロジェクトを起動するだけで、認証機能を実装できます(図2~5)。

図2 プロジェクト作成直後に実行した画面
図2 プロジェクト作成直後に実行した画面
図3 ログイン画面
図3 ログイン画面
図4 ユーザー登録画面
図4 ユーザー登録画面
図5 ログイン後の最初の画面
図5 ログイン後の最初の画面

 このままでも利用できてしまいますが、どのように認証が実装されているのかLoginメソッド部分を解説します。

AccountControllerクラスの一部
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace SampleMVCPreview4.Controllers
{

    [HandleError]
    public class AccountController : Controller
    {

    <中略>

        // アプリ名.Controllers.IFormsAuthenticatiインターフェイス
        // の設定
        public IFormsAuthentication FormsAuth
        {
            get;
            private set;
        }

        // System.Web.Security.MembershipProviderの設定
        public MembershipProvider Provider
        {
            get;
            private set;
        }
    <中略>

        public ActionResult Login(string username,
                                  string password, bool? rememberMe)
        {

            ViewData["Title"] = "Login";

            // ポストリクエスト以外は、Loginフォームを表示する
            if (Request.HttpMethod != "POST")
            {
                return View();
            }

            // パラメタ確認
            List<string> errors = new List<string>();

            if (String.IsNullOrEmpty(username))
            {
                errors.Add("You must specify a username.");
            }

            if (errors.Count == 0)
            {

                // ログイン認証開始
                bool loginSuccessful
                  = Provider.ValidateUser(username, password);

                if (loginSuccessful)
                {
                    // 認証成功時HomeControllerのIndexメソッドへ
                    FormsAuth.SetAuthCookie(username,
                                            rememberMe ?? false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    // 認証失敗時errorsリストにエラーメッセージ追加
                    errors.Add("The username or password provided" +
                               "is incorrect.");
                }
            }

            // もし、以下の項目が表示されたのであれば認証失敗で、
            // 同一ページにエラー内容が表示
            ViewData["errors"] = errors;
            ViewData["username"] = username;
            return View();
        }

 ごらんの通り、認証部分でASP.NETのMembership機能を利用していることが確認できました。ユーザー登録やパスワード変更、ログアウトに関しても同様にMembership機能を利用して実装しています。また、登録ユーザーはASP.NET 構成ページにて確認できます(図6 )。

図6 ログイン後の最初の画面
図6 ログイン後の最初の画面

 なお、認証によるページ閲覧やロールの設定については、後述するAuthorize属性で活用できます。

次のページ
ASP.NET MVCにおけるテスト

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2888 2008/09/01 18:49

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング