프로젝트 생성할때 ASP.NET Core Web App (Model-View-Controller)로 시작
멤버쉽컨트롤러 추가후 멤버쉽 컨트롤러 cs 파일 부분에 우클릭 후 뷰 추가, 뷰는 shared 폴더 아래의
_Layout.cshtml로 추가하기
• 모델
로그인에 필요한 id, pw의 게터, 세터, 최소 글자수, 에러메시지, 뷰에 보여줄 이름을 정의
namespace MVC.Models
{
public class LoginInfo
{
[Display(Name = "id")]
[Required(ErrorMessage = "id 입력")]
[MinLength(4, ErrorMessage ="4자리 이상")]
public string userID { get; set;}
[Display(Name = "pw")]
[Required(ErrorMessage = "pw 입력")]
[MinLength(4, ErrorMessage = "4자리 이상")]
public string userPW { get; set;}
}
}
• 컨트롤러
get 요청이 들어오면
~/Membership/Login.cstml로 연결해서 사용자가 id, pw를 입력하고
적절하게 들어왓으면 로그인 성공 페이지로 리턴, 실패시 에러 메시지와 함께 로그인 페이지로 이동
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(LoginInfo login)
{
string msg = string.Empty;
if (ModelState.IsValid)
{
string userid = "test";
string userpw = "1111";
if(login.userID == userid && login.userPW == userpw)
{
TempData["Message"] = "로그인 성공";
return RedirectToAction("Index", "Membership");
}
else
{
msg = "정확한 id,pw를 입력해주세요";
}
}
else
{
msg = "로그인 실패";
}
ModelState.AddModelError(string.Empty, msg);
return View(login);
}
• 뷰
index.cshtml
@{
ViewData["Title"] = "Membership";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>@ViewData["Title"]</h1>
<div class="text-info">@TempData["Message"]</div>
login.cshtml
모델로 로그인정보를 넣어주고 사용자가 입력 가능한 폼과 post 시 이벤트, 로그인 실패시 에러를 띄워줄 div 등을 배치한다
<!-- 모델 선언해주고 해당 모델의 정보를 보여주는 페이지 -->
@model LoginInfo
@{
ViewData["Title"] = "Login";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>@ViewData["Title"]</h1>
<div class="row">
<div class="col-md-4">
<form method="post" asp-controller="Membership" asp-action="Login" onsubmit="btnLogin.disabled = true; return true;">
<div class="text-danger" asp-validation-summary="All"></div>
<div class="form-group">
@Html.DisplayNameFor(m => m.userID)
<input type="text" class="form-control" asp-for="userID" placeholder="ID" autofocus />
<span class="text-danger" asp-validation-for="userID"></span>
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.userPW)
<input type="password" class="form-control" asp-for="userPW" placeholder="PW" />
<span class="text-danger" asp-validation-for="userPW"></span>
</div>
<button type="submit" name="btnLogin" class="btn-lg btn-success btn-block">로그인</button>
</form>
</div>
</div>
'C# > ASP.NET' 카테고리의 다른 글
데이터베이스 연동 code first 방식 (0) | 2024.10.06 |
---|---|
DI (1) | 2024.10.05 |