Asp.Mvc 2.0實現使用者登入與登出功能執行個體講解(2)_實用技巧

來源:互聯網
上載者:User

這一節講解下ASP.MVC 2.0的使用者登入與登出功能,先講登入,後說登出。我們這個系列講的使用者登入方式都是FORM表單驗證方式。在講之前先給大家說下<%:%>的功能,<%:%>與<%=%>功能一樣,用來動態輸出內容。
一、登入
1. 建立MODEL
登入的時候,我們一般只要驗證使用者名稱和密碼,還有是否儲存登入COOKIE,所以我們建立一個MODEL登入類,只需包括3個欄位就可以。

/// <summary>  /// 使用者登入MODEL  /// </summary>  public class Login  {     /// <summary>   /// 使用者名稱   /// </summary>   [DisplayName("使用者名稱")]   public string UserName   {    get;    set;   }    /// <summary>   /// 密碼   /// </summary>   [DisplayName("密碼")]   public string UserPwd   {    get;    set;   }    /// <summary>   /// 是否儲存COOKIE   /// </summary>   [DisplayName("記住我")]   public bool RememberMe   {    get;    set;   } 

2.建立VIEW頁面
同樣登入的VIEW頁面,同樣建立一個強型別的頁面,之所以喜歡建立強型別的頁面,是因為頁面和MODEL相關聯,在頁面中直接可以使用MODEL。此時頁面的視圖資料類應選擇MvcLogin.Models.Login。

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcLogin.Models.Login>" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">  <title>Login</title> </head> <body> <div style="font-size:15pt;color:Red;">  <%if (ViewData["msg"] != null)  {%>  <%:ViewData["msg"].ToString()%>  <%} %> </div>  <div>  <%Html.BeginForm();%>    <table>   <tr>   <td></td>   <td>使用者登入</td>   </tr>     <tr>   <td><%:Html.LabelFor(m=>m.UserName) %></td>   <td><%:Html.TextBoxFor(m=>m.UserName)%></td>   </tr>     <tr>   <td><%:Html.LabelFor(m=>m.UserPwd) %></td>   <td><%:Html.PasswordFor(m=>m.UserPwd) %></td>   </tr>     <tr>   <td><%:Html.LabelFor(m=>m.RememberMe) %></td>   <td><%:Html.CheckBoxFor(m=>m.RememberMe) %></td>   </tr>   <tr>   <td></td>   <td><input type="submit" value="登入" /></td>   </tr>  </table>  <%Html.EndForm(); %>  </div> </body> </html> 

Html.CheckBoxFor用來產生一個複選框按鈕
3.建立controller
同樣我們在controller中建立兩個login方法,一個用來展現頁面,一個用來點擊登入按鈕後判斷使用者名稱和密碼

public ActionResult Login()   {    return View();   }    [HttpPost]   public ActionResult Login(Models.Login model)   {    if (new Models.SqlHelper().UserLogin(model))    {     //如果使用者名稱存在,轉向首頁     FormsService.SignIn(model.UserName,model.RememberMe);     return RedirectToAction("index");    }    else    {     //登入失敗,轉向登入頁面     ViewData["msg"] = "登入失敗";     return View(model);    }       } 

第二個Login方法前面有HTTPPOST屬性,所以只能接受POST請求
4.SQLHELPER中添加判斷使用者名稱和密碼的方法

/// <summary>   /// 判斷使用者登入是否成功   /// </summary>   /// <param name="model"></param>   /// <returns></returns>   public bool UserLogin(Login model)   {    strUserExist = string.Format(strUserExist, model.UserName, model.UserPwd);    SqlConnection con = new SqlConnection(conStr);    con.Open();    SqlCommand cmd = new SqlCommand(strUserExist, con);    SqlDataAdapter adp = new SqlDataAdapter(cmd);    DataSet ds = new DataSet();    adp.Fill(ds);    con.Close();    if (ds != null && ds.Tables[0].Rows.Count > 0)    {     return true;    }    return false;   } 

5.運行登入頁面
此時我們在頁面中輸入URL,就會轉向登入頁面,
效果如下:

點擊登入,登入成功後轉向首頁,登入失敗返回本頁面,並顯示提示資訊。
點擊登入的時候,是POST提交方式,會調用publicActionResult Login(Models.Login model)方法。
登入失敗頁面如下

登入成功頁面如下

二.登出
登入成功後,轉向首頁,在首頁上我們會產生登出串連。

 <p style="font-size:15pt; color:Red;">   <%if (Request.IsAuthenticated)    {%>    歡迎您<%:Page.User.Identity.Name%>!       <%:Html.ActionLink("登出", "LoginOff")%>    <%}    else    {%>    <%:Html.ActionLink("登入", "Login")%>    <%} %>   </p> 

這裡介紹下Html.ActionLink方法,
Html.ActionLink用來產生一個連結,第一個參數代錶鏈接的問題,第二個參數代表的是actionname,可以理解為連結的頁面。

由以上代碼可以看出,登出連結指向LoginoFF.,也就是controller中的loginoff action方法,所以我們在controller中添加一個一個loginoff方法,執行完loginoff方法後,會轉向INDEX首頁

<span style="font-family:Microsoft YaHei;font-size:16px;"> </span>/// <summary>   /// 使用者登出   /// </summary>   /// <returns></returns>   public ActionResult LoginOff()   {    FormsService.SignOut();    return RedirectToAction("index");   } 

以上就是Asp.Mvc 2.0實現使用者登入與登出功能執行個體講解,大家可以在自己的網站上進行實踐了,希望在此基礎上可以有所創新和完善。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.