[Asp.Net MVC4]驗證使用者登入實現執行個體

來源:互聯網
上載者:User
最近我們要做一個仿sina的微博,碰巧的是我最近在學習mvc,就想用mvc技術實現這個項目。

既然是微博,那不用想也應該知道肯定要有使用者登陸,但是和常規的asp.NET登陸又不一樣,以下是我一下午+一晚上的研究成果~~~

首先,建好資料庫以及表,這就不用說了吧。

下面說一下主要的結構

控制器:

HomeController 這是首頁的控制器

LoginController 這是登陸的控制器

類:

CDBTemplate.cs 這是資料庫資料對應的類,裡邊描述的是資料庫的結構

////////////////////////////////////////////我是分割線\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

首先在HomeController 控制器的返回函數

public ActionResult Index(){...}

前面加上:

[Authorize(Roles = "admins")]

就是這樣:

[Authorize(Roles = "admins")]public ActionResult Index(){  ...}

這條語句的意思是在這加上一個許可權驗證,只允許使用者角色是admins的使用者訪問

然後再web.config檔案裡添加:

<authentication mode="Forms">   <forms loginUrl="~/Login" timeout="2880" /></authentication>

這些的意思是給整個網站增加使用者驗證,指向的登陸介面是login這個控制器

CDBTemplate.cs檔案裡的一個類:

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; }  }

然後為LoginController 控制器的預設返回函數增加一個視圖Index.cshtml,在頁面裡面加上下面的代碼:

@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)方法的第一個參數的意思是指定要調用的控制器的方法的名字,第二個參數的意思是控制器的名字,第三個參數的意思是用什麼方法把表單提交給伺服器,這裡我們為了安全,選擇用post方式提交。

然後在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("~/");    }

好了,搞定了~~~~

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援topic.alibabacloud.com。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.