最近、Sina のような Weibo を作成する予定です。最近 MVC を学習しており、MVC テクノロジーを使用してこのプロジェクトを実現したいと考えています。
Weiboなのでユーザーログインが必要であることはご存知かと思いますが、通常のasp.NETログインとは異なります。以下は私の午後+一晩の調査結果です~~~
まず。何よりも、データベースとテーブルを構築することは言うまでもありません。
主な構造について話しましょう
Controller:
HomeController これはホームページのコントローラーです
LoginController これはログインコントローラーです
Class:
CDBTemplate.cs これはデータベースデータです対応するクラスはデータベースの構造を記述します
////////////////////////////////////// ////////私が境界線です\\\\\\\\\\\\\\\\\\\\\\\\\
まず、return関数でHomeController コントローラー
public ActionResult Index(){...}
を前に追加します:
[Authorize(Roles = "admins")]
以上です:
[Authorize(Roles = "admins")] public ActionResult Index() { ... }
このステートメントは、ここに権限の検証を追加し、管理者のユーザー ロールを持つユーザーのみを許可することを意味します。アクセスするには
次に、web.config ファイルを追加します:
<authentication mode="Forms"> <forms loginUrl="~/Login" timeout="2880" /> </authentication>
これらは、Web サイト全体にユーザー認証を追加することを意味します。指すログイン インターフェイスは、CDBTemplate.cs ファイル内のログイン コントローラー
A クラスです。 :
public class LogOnModel { [Required] [Display(Name = "用户名")] public string UserName { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "密码")] public string Password { get; set; } [Display(Name = "下次自动登陆")] public bool RememberMe { get; set; } }
次に、ビュー Index.cshtml を LoginController コントローラーのデフォルトの戻り関数に追加し、次のコードをページに追加します。
@model Weibo.Models.LogOnModel //LogOnModel 是CDBTemplate.cs文件里的一个类 @using (Html.BeginForm("Login","Login",FormMethod.Post)) { @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName, "请输入用户名!", new {style="color: #f00" }) @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password,"请输入密码!",new {style="color: #f00" }) @Html.CheckBoxFor(m => m.RememberMe) @Html.LabelFor(m => m.RememberMe) @Html.ActionLink("忘记密码", "forgotpwd", null, new {@class="rt",target="_blank" }) <input type="submit" value="登陆微博" /> }
上記のコードでは、 Html.BeginForm(" Login"、"Login"、FormMethod.Post) メソッドの最初のパラメーターは、呼び出されるコントローラーを指定するメソッドの名前を意味し、2 番目のパラメーターはコントローラーの名前を意味し、3 番目のパラメーターは使用するメソッドを意味します. ここでは、安全のためにフォームを投稿モードで送信することを選択します。
次に、このようなメソッドを LoginController コントローラーに追加します。
[HttpPost, ActionName("Login")] public void Login(FormCollection collection) { object obj = SqlHelper.ExecuteScalar("select UserId from CDBUsers where UserName=@uname and Password=@pwd", new SqlParameter("@uname", collection[0]), new SqlParameter("@pwd", Weibo.Models.Myencrypt.myencrypt(collection[1]))); if (obj != null) { FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket( 1, collection[0], DateTime.Now, DateTime.Now.AddMinutes(30), false, "admins" ); string encryptedTicket = FormsAuthentication.Encrypt(authTicket); System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); } Response.Redirect("~/"); }
わかりました、完了~~~~
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。 PHP中国語ウェブサイトをサポートしていただければ幸いです。
[Asp.Net MVC4] 検証ユーザー ログインの実装例関連記事の詳細については、PHP 中国語 Web サイトに注目してください。