Controller(Account Controller/ HomeController) > View/ Home(LoginSucess.cshtml), login.cshtml
[HttpPost]
public IActionResult Login(LoginViewModel model) // Model폴더의 User를 받아오겠고 그 이름을 model이라고한다.
{
// ID, 비밀번호 - 필수
if (ModelState.IsValid)
{
using (var db = new AspnetNoteDbContext())
{
// Linq - 메서드 체이닝(ch)
// => : A Go to B
//var user = db.Users
// .FirstOrDefault(u => u.UserId == model.UserId && u.UserPassword == model.UserPassword); //데이터베이스에서 User테이블에서 첫번째 혹은 기본값을 출력하되, db에서 조회한 user아이디와 model에서 입력한 userID가 같은지 확인!
var user = db.Users
.FirstOrDefault(u => u.UserId.Equals(model.UserId) &&
u.UserPassword.Equals(model.UserPassword));
if (user != null)
{
// 로그인 성공 시
return RedirectToAction("LoginSuccess", "Home"); // 로그인 성공 페이지로 이동
}
}
//로그인 실패 시
// 사용자 ID 자체가 회원가입 X 경우
ModelState.AddModelError(String.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다.");
}
return View(model);
}
@model AspnetNote.MVC6.ViewModel.LoginViewModel;
<h2>로그인</h2>
<form class="form-horizontal" method="post" asp-controller="Account" asp-action="Login">
<div class="text-danger" asp-validation-summary="ModelOnly"></div>
<div class="form-group">
<label>사용자 ID</label>
<input type="text" asp-for="UserId" class="form-control" placeholder="사용자 ID 입력"/>
<span class="text-danger" asp-validation-for="UserId"></span>
</div>
<div class="form-group">
<label>비밀번호</label>
<input type="password" asp-for="UserPassword" class="form-control" placeholder="비밀번호 입력" />
<span class="text-danger" asp-validation-for="UserPassword"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">로그인</button>
</div>
</form>
<h1>로그인에 성공하였습니다.</h1>
using System.ComponentModel.DataAnnotations;
namespace AspnetNote.MVC6.ViewModel
{
public class LoginViewModel
{
[Required(ErrorMessage = "사용자 아이디를 입력하세요.")] // Not Null 설정
public string UserId { get; set; }
[Required(ErrorMessage = "사용자 비밀번호를 입력하세요.")]
public int UserPassword { get; set; }
}
}
현재 문제는 User Model에서 UserName을 Required로 필수 입력으로 받고 있는데 현재 로그인은 아이디와 비밀번호만 입력받기 때문에 AccountController에서 false로 계속 받게된다. 이러한 것을 해결하기 위해서는 View를 위한 model을 생성해야 한다!
-> ViewModel 폴더를 새로 만들고 클래스를 LoginViewModel을 만들고 거기에 새로운 Id와 PW를 get set 한다.
다음 Login View페이지로 넘어와
맨 위에 @model AspnetNote.MVC6.ViewModel.LoginViewModel; 로 바꿔준다!