WebMatrix でユーザー認証機能(4) ―― ログインとログオフ
執筆日時:
WebMatrix でユーザー認証機能(3) ―― なにはともあれユーザー登録しないと始まらん - だるろぐ で無事ユーザー登録ができ、ログインされた。という訳で今回はログアウトを実装しなければならない。
# Logout.cshtml@{ WebSecurity.Logout();
var returnUrl = Request.QueryString["ReturnUrl"]; Response.Redirect(returnUrl.IsEmpty() ? "~/" : returnUrl); }
おわり! ほんとにこれだけだよ……。一応、 Logout?ReturnUrl=~/Account/Login なんかで ~/Account/Login へリダイレクトされるようにしてみたけど。
ちなみに、ログイン処理は少し長くなった。
# Login.cshtml @{ var name = ""; var password = ""; var rememberMe = true; Validation.RequireField( "name", "You must specify an name address."); Validation.RequireField( "password", "You must specify a password."); if (IsPost) { name = Request.Form["name"]; password = Request.Form["password"]; rememberMe = Request.Form["rememberMe"].AsBool(); if (Validation.IsValid()) { if (WebSecurity.Login(name, password, rememberMe)) { var returnUrl = Request.QueryString["ReturnUrl"]; Response.Redirect( returnUrl.IsEmpty() ? "~/" : returnUrl); } else { ModelState.AddFormError( "The user name or password is incorrect."); } } } } <section id="login"> <form method="post"> @Html.ValidationSummary("Log in was unsuccessful." + "Please correct the errors and try again.", excludeFieldErrors: true, htmlAttributes: null) <fieldset> <legend>Log in to Your Account</legend> @this.RenderTextWithValidation("name") @this.RenderPasswordWithValidation("password") @this.RenderCheckBoxWithValidation("rememberMe") <input type="submit" value="Log in" /> </fieldset> </form> <p> <a href="~/Account/Register">Don't have a Account?</a> </p> </section>
寄り道: string クラスの拡張 - だるろぐ で作ったコードのお陰で、 RenderTextWithValidation() などがシンプルになっている以外はほとんどユーザー登録の処理と変わらない感じ。
次は OAuth でログインできるようになればいいな。
ちなみに
string.AsBool や string.IsEmpty は ASP.NET Web Pages に含まれているのかな? このあたりの関数については、 ASP.NET | The ASP.NET Site でコンパクトに纏められているので、一度目を通しておくとわしみたいに車輪の再発明をせずに済むぞ!