Asp.net mvc 사용자 로그 인 폼 확인 상세 설명
첫 번 째 단계:asp.net mvc 프로젝트 를 만 들 고 프로젝트 의 AppStart 폴 더 아래 에 FilterConfig.cs 가 있 습 니 다.이 파일 에 전역 필 터 를 등록 할 수 있 습 니 다.저 희 는 파일 에 AuthorizeAttribute 필 터 를 다음 과 같이 추가 합 니 다.
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}
}
두 번 째 단계:웹.config 설정 파일 에서 사이트 의 인증 을 mode="Forms"로 수정 합 니 다.
<system.web>
<!--Cockie , url-->
<authentication mode="Forms">
<forms name="xCookie" loginUrl="~/Login/Index" protection="All" timeout="60" cookieless="UseCookies"></forms>
</authentication>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
알림:최종 생 성 된 쿠키 의 이름 으로 name 값 을 설정 합 니 다.loginUrl 은 사용자 가 로그 인하 지 않 으 면 이동 하 는 페이지 로 지정 합 니 다.로그 인 페이지 에 도전 합 니 다.세 번 째 단계:사용자 로그 인 관련 컨트롤 러 와 보기 추가
LoginController 컨트롤 러 생 성:
public class LoginController : Controller
{
[HttpGet]
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
[HttpPost]
[AllowAnonymous]
public ActionResult Login(User user)
{
if (!user.Username.Trim().Equals("liuxin") || !user.Password.Trim().Equals("abc"))
{
ModelState.AddModelError("", " ");
return View("index", user);
}
//if (!user.Username.Trim().Equals("liuxin")) {
// ModelState.AddModelError("Username", " ");
// return View("index", user);
//}
//if (!user.Password.Trim().Equals("abc")) {
// ModelState.AddModelError("Password", " ");
// return View("index", user);
//}
user.Id = Guid.NewGuid().ToString("D");// id
FormsAuthHelp.AddFormsAuthCookie(user.Id, user, 60);// ticket id, 60
return Redirect("~");
}
[HttpGet]
public ActionResult Logout() {
FormsAuthHelp.RemoveFormsAuthCookie();
return Redirect("~/Login/Index");
}
}
특히 주의:Index 와 Login 두 가지 방법 은'[AllowAnonymous]'를 사용 하여 이 두 가지 방법 을 익명 으로 접근 할 수 있 음 을 알려 야 합 니 다.그렇지 않 으 면 필터 가 익명 으로 접근 할 수 없 기 때문에 로그 인 페이지 와 사용자 제출 이 불가능 합 니 다.분명히 이것 은 우리 가 보고 싶 은 것 이 아니다.알림:이 사용자 의 데 이 터 를 테스트 하기 위해 죽 었 습 니 다.사용자 의 id 도 임시로 생 성 되 었 습 니 다.
public class User
{
public string Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
로그 인 보기 만 들 기:
@{
Layout = null;
ViewBag.Title = "Index";
}
<h3> , </h3>
@using(Html.BeginForm("Login", "Login", FormMethod.Post))
{
@Html.Label("Username", " :")@Html.TextBox("Username", null, new { id = "Username", placeholder = " " })
@Html.ValidationMessage("Username")<br/>
@Html.Label("Password", " :")@Html.TextBox("Password", null, new { id = "Password", placeholder = " " })
@Html.ValidationMessage("Password")<br/>
<input type="submit" value=" " /> <input type="reset" value=" " />
@Html.ValidationSummary(true)
}
알림:사용자 가 로그 인하 지 않 은 것 을 감지 하면 웹.config 에 설 정 된 url 페이지 로 이동 합 니 다.사용자 가 비밀 번 호 를 입력 하고 제출 할 때 사용자 가 입력 한 데 이 터 는 LoginController 컨트롤 러 의 Login 방법 에 제출 되 고 사용자 의 입력 을 검증 하 며 인증 실 패 는 로그 인 인터페이스 로 다시 돌아 갑 니 다.인증 이 성공 하면 실 행 됩 니 다.<<***FormsAuthHelp.AddFormsAuthCookie(user.Id, user, 60);//ticket 어음 의 이름 을 사용자 의 id 로 설정 하고 유효 시간 을 60 분**>로 설정 합 니 다.이 문 구 는 ticket 어음 을 생 성하 고 쿠키 에 밀봉 하 는 역할 을 합 니 다.asp.net mvc 는 본 격 적 으로 이 쿠키 인증 사용자 가 로그 인 했 는 지 확인 합 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.
네 번 째 단계:사용자 정보 생 성 ticket 을 쿠키 에 밀봉 합 니 다.
public class FormsAuthHelp
{
/// <summary>
/// ticket cookie ( )
/// </summary>
/// <param name="loginName">Forms ( id, ticket )</param>
/// <param name="userData"> </param>
/// <param name="expireMin"> </param>
public static void AddFormsAuthCookie(string loginName, object userData, int expireMin)
{
//
var data = JsonConvert.SerializeObject(userData);
// FormsAuthenticationTicket, 。
var ticket = new FormsAuthenticationTicket(1,
loginName, DateTime.Now, DateTime.Now.AddDays(1), true, data);
// Ticket, 。
var cookieValue = FormsAuthentication.Encrypt(ticket);
// Cookie
//FormsAuthentication.FormsCookieName cookie , ".ASPXAUTH"
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieValue)
{
HttpOnly = true,
Secure = FormsAuthentication.RequireSSL,
Domain = FormsAuthentication.CookieDomain,
Path = FormsAuthentication.FormsCookiePath
};
//
if (expireMin > 0)
cookie.Expires = DateTime.Now.AddMinutes(expireMin);
var context = HttpContext.Current;
if (context == null)
throw new InvalidOperationException();
// Cookie
context.Response.Cookies.Remove(cookie.Name);
context.Response.Cookies.Add(cookie);
}
/// <summary>
/// ticket
/// </summary>
public static void RemoveFormsAuthCookie() {
FormsAuthentication.SignOut();
}
}
STEP 5:테스트 실행1.사이트 시작 시 해당 사이트 주소 입력:아래 그림
2.이 때 사용자 가 로그 인하 지 않 으 면 로그 인 화면 으로 이동 합 니 다:아래 그림
3.잘못된 비밀 번 호 를 입력 하면 다시 로그 인 화면 으로 이동 하여 오류 알림
4.올 바른 아 이 디 비밀번호 입력
5.사용자 탈퇴 를 클릭 하면 쿠키 가 삭제 되 기 때문에 로그 인 화면 으로 이동 합 니 다.
소스 코드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클린 아키텍처의 Presenter를 이해하기 어려운 것은 MVC 2가 아니기 때문에클린 아키텍처에는 구체적인 클래스 구성 예를 보여주는 다음 그림이 있습니다. 이 그림 중에서 Presenter와 Output Boundary(Presenter의 인터페이스)만 구체 구현을 이미지하는 것이 매우 어렵다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.