(翻訳)ASP.NET Web Pages(Razor)WebSecurity基本用法

3915 ワード

ASP.NET Web Pages(Razor)にはsecurity/loginに関する基礎設定があり、関連プロセスを自動的に処理できる.まず、membership情報(例えば、ユーザー名、パスワード)は、あなたのサイトのデータベースに格納されます.Razorには、データベース管理の詳細な処理に使用されるmembership providerが含まれています.実際には、ログイン情報がどのように、どこで処理されているかを知る必要はありません.このチュートリアルは、エンジンの背後に隠されている詳細を喜んで理解することに基づいています.
Razorには、Websecurityアシスタント、Membership、Rolesオブジェクトも含まれており、ユーザーの管理方法を提供しています.たとえば、ユーザーの作成、ログイン、ログアウト方法などです.このチュートリアルには、基本的な機能の練習のみが含まれています.
1、初期化membership
Webサイトのルートディレクトリで_を作成AppStart.cshtml.コード#コード#
ファイルでWebSecurityを呼び出します.InitializeDatabaseConnectionメソッド.
@{
  WebSecurity.InitializeDatabaseConnection("TestMembership",
     "UserProfile", "UserId", "Email", true);
}

パラメータ値の説明:
「TestMembership」:ASPに提供されます.NETは、すでに存在する必要があるユーザー情報のデータベース名を格納し、ユーザー情報に関連するテーブルが存在しない場合、初期化メソッドは自動的に関連するテーブルを作成します.
「UserProfile」:user情報を格納するテーブル名は、以下を参照してください.
「UserId」:user-profileテーブルのユーザーのプライマリ・キー名.詳細は以下を参照してください.
「Email」:user-profileテーブルのユーザー名に対応するカラム名(emailアドレスと仮定).
初期化の役割:
membershipシステムは、既存のユーザ情報のデータベースと統合できるように設計されている.例えば、連絡先リストまたは従業員テーブルが既に存在し、初期化コードは、ユーザId、ユーザ名情報を含むテーブル名およびカラム名を指定するために使用され、membershipシステムは後でこれらの情報を使用する.
membershipシステムは実際には「profile」データと「membership」データを区別している.profileデータには、ユーザ名、ID、およびアドレスなどの他の必要な情報が含まれる.逆に、membershipデータは、パスワードhash、前回パスワード変更時間など、membershipシステムに必要なセキュリティに関する詳細な資料である.これらの情報はprofileデータベーステーブルに存在しないか、そこに保存したくない可能性があります.つまり,profile"データと"membership"データの分割により,ASP.NETは既存のユーザデータベースを容易に利用できる.
2、ホームページを作成する.cshtml.コード#コード#
サイトのルートディレクトリにページを作成します.cshtml.
Loginページへのリンクを追加します.
Registerページへのリンクを追加します.
ページコードでWebSecurityを呼び出します.IsAuthenticatedは、ユーザーがログインしているかどうかを判断します.trueを返すと、現在のユーザー名(WebSecurity.CurrentUserName)が表示され、Logoutページへのリンクが追加されます.そうしないと、Loginページへのリンクが表示されます.
@if(WebSecurity.IsAuthenticated)
{
  <p>Welcome, @WebSecurity.CurrentUserName</p>
  <p><a href="@Href("~/logout")">Log out</a></p>
}
else
{
  <p><a href="@Href("~/Login")">Log in</a> | 
  <a href="@Href("~/Register")">Register</a></p>
}

実際のアプリケーションでは、Layoutレイアウトやその他の方法などの再利用可能なコード方式を使用して、Loginリンクと現在のユーザー名を表示します.3、登録ページRegisterを作成する.cshtml.コード#コード#
簡単な登録ページでは、ユーザー名(Eメール)とパスワードを入力できます.通常、ユーザーにパスワードを2回入力させて入力を確認させます.
Webサイトのルートディレクトリにページを作成するRegister.cshtml.
ユーザー名とパスワード(X 2)を入力するテキストボックス(要素)を追加し、コミットボタンを追加します.
PostBack処理ではWebSecurityを呼び出す.UserExistsは、ユーザー名が使用されていないことを確認します.
WebSecurityを呼び出すCreateUserAndAccountはmembershipデータを作成します.
if(WebSecurity.UserExists(username))
{
    errorMessage = String.Format("User '{0}' already exists.", 
        username);
}
else
{
    WebSecurity.CreateUserAndAccount(username, password,
        null, false);
    WebSecurity.Login(username, password, true);
    errorMessage = String.Format("{0} created.", username);
}

詳細:
パスワードの2回の入力を比較し、同じであることを確認します.
コミット処理コードでWebSecurityを呼び出す.Logoutは現在のユーザーをLogoutに強制的にログインします.
コミット処理コードでは、まずWebSecurityを呼び出す.IsAuthenticatedは、現在のユーザーがログインしているかどうかを判断し、エラーが表示され、登録プロセスをスキップします.
if(WebSecurity.IsAuthenticated)
{
   errorMessage = String.Format("You are already logged in." + 
       " (User name: {0})", WebSecurity.CurrentUserName);
}

メンバーシップユーザーの作成に成功すると、WebSecurityが呼び出されます.Login自動ログイン.
Redisplay the user's entry in the user name text box (useful if there was an error so that they can see what they entered). Due to HTML constraints, you can't do this with passwords, even if you wanted to.
実際のアプリケーションでは,SSLを用いてブラウザとサーバ間の通信を暗号化する.具体的には、http://www.microsoft.com/web/post/securing-web-communications-certificates-ssl-and-https
認証コード処理を追加し、実際に手動で登録されていることを確認します.
原文住所:http://www.mikepope.com/blog/DisplayBlog.aspx?permalink=2240