昨天完成註冊頁面了,接著來完成登入頁面的部份。
在HomeController
底下新增Login()
動作方法,如下Code:
public ActionResult Login()
{
return View();
}
新增對應View,加入頁面時範本選擇「Empty」,如下圖:
頁面加入後修改內容如下方Code:
@{
ViewBag.Title = "會員登入";
}
<h2>會員登入</h2>
@using (Html.BeginForm())
{
<div class="form-group">
@Html.Label("帳號", new { @for = "UserId" })
<div>
@Html.TextBox("UserId", null, new { id = "UserId", @class = "form-control", required = "required" })
</div>
</div>
<div class="form-group">
@Html.Label("密碼", new { @for = "Password"})
<div>
@Html.Password("Password", null, new { id = "Password", @class = "form-control", required = "required" })
</div>
</div>
<div class="form-group">
<input type="submit" value="登入" class="btn btn-default" />
<div class="text-danger">
@ViewBag.Message
</div>
</div>
}
記得輸入帳密欄位是依靠其name
屬性繫結,才能透過表單提交後傳遞參數哦~
這邊如果不習慣用HTMLHelper寫的話也可以自行改成HTML格式,參考如下Code:
<form action="~/Home/Login" method="post">
<div class="form-group">
<label for="UserId">帳號</label>
<div>
<input type="text" id="UserId" name="UserId" class="form-control" required />
</div>
</div>
<div class="form-group">
<label for="Password">密碼</label>
<div>
<input type="password" id="Password" name="Password" class="form-control" required />
</div>
</div>
<div class="form-group">
<input type="submit" value="登入" class="btn btn-default" />
<div class="text-danger">
@ViewBag.Message
</div>
</div>
</form>
接著繼續完成Login()
的POST方法,當表單提交後,首先會撈出符合輸入帳號密碼的會員資料,如果是null
的話代表帳密輸入不正確,會回傳原本的View並顯示錯誤訊息;如果不為null
代表帳密符合,進行驗證授權後會轉至~/Member/Index
的頁面,Code如下:
[HttpPost]
public ActionResult Login(string UserId, string Password)
{
//找出符合登入帳號與密碼的 Member資料
var member = db.table_Member.Where(m => m.UserId == UserId && m.Password == Password).FirstOrDefault();
if (member == null)
{
ViewBag.Message = "帳號or密碼錯誤,請重新確認登入";
return View();
}
Session["Welcome"] = $"{member.Name} 您好";
FormsAuthentication.RedirectFromLoginPage(UserId, true);
return RedirectToAction("Index", "Member");
}
上述完成後可以先測試看看登入流程是否正常,可以利用註冊頁面自行加入新的帳密資料,或是從資料表已經有的帳密登入。如果登入成功會顯示如下圖錯誤:
因為我們還沒實作相關動作方法和檢視頁面呀~不過今天就先完成到這好了,講得比較粗略但相關知識應該前面的文章都有講到,如果有任何問題也歡迎留言討論唷~那就明天見啦~