[Asp.Net MVC4] ユーザー ログインの検証実装例

高洛峰
リリース: 2016-12-24 13:35:16
オリジナル
1790 人が閲覧しました

最近、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 サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート