로그인 입력 Form 만들기

맛없는콩두유·2022년 10월 23일
0
post-thumbnail
post-custom-banner

Controller(Account Controller/ HomeController) > View/ Home(LoginSucess.cshtml), login.cshtml

  • AccountController.cs
[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);
        }
  • Login.cshtml
@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>
  • Home / LoginSuccess.cshtml
<h1>로그인에 성공하였습니다.</h1>
  • ViewModel / LoginViewModel.cs
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; 로 바꿔준다!

profile
하루하루 기록하기!
post-custom-banner

0개의 댓글