Asp.Mvc 2.0 사용자 서버 인증 실례 설명(4)
서버 측 인증 에 대해 서 는 주로 System.Component Model.Data Annotations 네 임 스페이스 의 라 이브 러 리 를 호출 합 니 다.
우 리 는 이번에 도 등록 페이지 를 예 로 들 어 서버 측 검증 을 설명 하 는데 주로 등록 페이지 에 대해 다음 과 같은 검증 을 완성 합 니 다.
1.사용자 이름 이 비어 있 으 면 안 됩 니 다.
2.비밀 번 호 는 비어 있 으 면 안 되 고,비밀번호 길 이 는 5 자리 보다 작 으 면 안 됩 니 다.
3.비밀 번 호 는 비밀 번 호 를 확인 하 는 입력 과 같 아야 합 니 다.
4.메 일 형식 이 정확 해 야 합 니 다.
우리 먼저 효과 도 를 보 자.
MVC 에서 모든 필드 에 대한 검증 은 사실상 MODEL 층 에 검증 규칙 만 설정 하면 된다.
1.사용자 이름 인증
사용자 이름 에 대한 인증 은 사용자 이름 이 비어 있 지 않 은 것 만 검증 하면 됩 니 다.Required 속성 을 사용 하여 이 속성 을 MODEL 의 사용자 이름 필드 에 연결 하면 됩 니 다.
/// <summary>
///
/// </summary>
[DisplayName(" ")]
[Required(ErrorMessage=" !")]
public string UserName
{ get; set; }
Required 안의 매개 변 수 는 구체 적 인 알림 정 보 를 표시 합 니 다.이때 사용자 이름 이 비어 있 으 면 프론트 데스크 톱 ASPX 페이지 에 사용자 이름 이 비어 있 으 면 안 된다 는 알림 이 나타 납 니 다.당연히 프론트 데스크 에 잘못된 알림 정 보 를 표시 해 야 한다.<%:Html.ValidationMessageFor(m=>m.UserName)%>표 시 를 사용 하면 프론트 데스크 에 잘못된 알림 정 보 를 표시 할 수 있 습 니 다.2.비밀번호 검증
암호 인증 은 암호 가 비어 있 거나 암호 길이 가 제한 되 어 서 는 안 됩 니 다.
인증 암호 가 비어 있 는 것 은 인증 사용자 이름 이 비어 있 는 것 과 마찬가지 로 Required 속성 을 사용 합 니 다.
암호 의 길 이 를 확인 하려 면 StringLength 속성 을 사용 하 십시오.
/// <summary>
///
/// </summary>
[DisplayName(" ")]
[Required(ErrorMessage=" ")]
[StringLength(10, ErrorMessage = " 5 ",MinimumLength=5)]
public string UserPwd
{
get;
set;
}
StringLength 의 첫 번 째 매개 변 수 는 암호 의 최대 길 이 를 표시 하고 ErrorMessage 는 조건 이 충족 되 지 않 을 때의 오류 알림 정 보 를 표시 합 니 다.최소 길이
물론 프론트 데스크 에 오류 정 보 를 표시 할 곳 이 있어 야 합 니 다.오류 정 보 를 표시 하려 면 다음 과 같이 사용 해 야 합 니 다.
<%:Html.ValidationMessageFor(m=>m.UserPwd)%>
3.비밀번호 와 비밀번호 가 일치 하 는 지 확인
비밀번호 와 비밀번호 가 일치 하 는 지 확인 하려 면 좀 복잡 합 니 다.인증 규칙 을 사용자 정의 해 야 합 니 다.사용자 정의 인증 규칙 은 ValidationAttribute 류 를 계승 하고 isvaild 방법 을 실현 해 야 합 니 다.
/// <summary>
///
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public class PwdMatch :ValidationAttribute
{
private object _typeid = new object();
public string PWD { get; set; }//
public string ConfirmPwd { get; set; }//
public PwdMatch(string pwd, string confirmPwd)
: base()
{
PWD = pwd;
ConfirmPwd = confirmPwd;
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public override string FormatErrorMessage(string name)
{
return ErrorMessage;
}
/// <summary>
/// TYPEID
/// </summary>
public override object TypeId
{
get
{
return _typeid;
}
}
/// <summary>
///
/// </summary>
/// <param name="value">value MODEL MODEL </param>
/// <returns></returns>
public override bool IsValid(object value)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value);
object originalValue = properties.Find(PWD, true ).GetValue(value);//
object confirmValue = properties.Find(ConfirmPwd, true).GetValue(value);//
return Object.Equals(originalValue, confirmValue);
}
}
PwdMatch , MODEL , ,
[PwdMatch("UserPwd","ConfirPwd", ErrorMessage =" ¨¹ ? ®? ¨¡¤ ¨? ? £¤ ?")]
public class RegisterModel
{
}
PwdMatch 의 첫 번 째 매개 변수 표 에 있 는 암 호 는 이름 이 RegisterModel 의 암호 속성 과 같 고 두 번 째 필드 는 암 호 를 확인 하 는 것 입 니 다.이름 은 RegisterModel 과 확인 암호 속성 이 같 으 며 마지막 매개 변 수 는 오류 알림 정보 입 니 다.물론 프론트 데스크 에 오류 알림 정 보 를 표시 해 야 합 니 다.<%:Html.ValidationSummary(true,"사용®?집 이 무 너 지고 건물 이 무 너 지 는 바람 에...........................................................¹!")%>프론트 데스크 에 전체 오류 정보 목록 을 표시 할 수 있 습 니 다.
4.메 일 확인
메 일 박스 인증 은 주로 메 일 박스 형식 검증 입 니 다.형식 이 요구 에 부합 되 는 지 검증 합 니 다.메 일 박스 는 RegularExpressions 속성 을 사용 하면 됩 니 다.
/// <summary>
///
/// </summary>
[DisplayName(" ")]
//[DataType(DataType.EmailAddress)]
[RegularExpression(@"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$", ErrorMessage = " ")]
public string Email
{
get;
set;
}
첫 번 째 매개 변수 메 일 인증 의 정규 표현 식,두 번 째 매개 변 수 는 오류 알림 정보 입 니 다.ASPX 페이지 에 오류 정보 표시 용<%:Html.ValidationMessageFor(m=>m.Email)%>
이상 은 사용자 등록 정보 에 대한 검증 입 니 다.물론 저 희 는 정 보 를 제출 할 때 검증 통과 여 부 를 판단 해 야 합 니 다.저 희 는 ModelState.IsValid 를 사용 하여 검증 통과 여 부 를 판단 하고 TRUE 는 통과,FALSE 는 통과 되 지 않 았 음 을 표시 합 니 다.
model 코드:
/// <summary>
/// MODEL
/// </summary>
[PwdMatch("UserPwd", "ConfirPwd", ErrorMessage = " ")]
public class RegisterModel
{
/// <summary>
///
/// </summary>
[DisplayName(" ")]
[Required(ErrorMessage=" !")]
public string UserName
{ get; set; }
/// <summary>
///
/// </summary>
[DisplayName(" ")]
[Required(ErrorMessage=" ")]
[StringLength(10, ErrorMessage = " 5 ",MinimumLength=5)]
public string UserPwd
{
get;
set;
}
[DisplayName(" ")]
[Required(ErrorMessage=" !")]
[StringLength(10, ErrorMessage = " 5 ",MinimumLength=5)]
public string ConfirPwd
{
get;
set;
}
/// <summary>
///
/// </summary>
[DisplayName(" ")]
//[DataType(DataType.EmailAddress)]
[RegularExpression(@"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$", ErrorMessage = " ")]
public string Email
{
get;
set;
}
}
/// <summary>
///
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public class PwdMatch :ValidationAttribute
{
private object _typeid = new object();
public string PWD { get; set; }//
public string ConfirmPwd { get; set; }//
public PwdMatch(string pwd, string confirmPwd)
: base()
{
PWD = pwd;
ConfirmPwd = confirmPwd;
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public override string FormatErrorMessage(string name)
{
return ErrorMessage;
}
/// <summary>
/// TYPEID
/// </summary>
public override object TypeId
{
get
{
return _typeid;
}
}
/// <summary>
///
/// </summary>
/// <param name="value">value MODEL MODEL </param>
/// <returns></returns>
public override bool IsValid(object value)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value);
object originalValue = properties.Find(PWD, true ).GetValue(value);//
object confirmValue = properties.Find(ConfirmPwd, true).GetValue(value);//
return Object.Equals(originalValue, confirmValue);
}
}
프론트 페이지 코드
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcLogin.Models.RegisterModel>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title> </title>
<script type="text/javascript" src="../../Scripts/jquery-1.4.1-vsdoc.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.validate.js"></script>
<script type="text/javascript">
// $().ready(function () {
// $("#form1").validate(
// {
// rules:
// {
// UserName:
// {
// required: true
// },
// UserPwd:
// {
// required: true,
// minlength: 6
// },
// ConfirPwd:
// {
// required: true,
// minlength: 6,
// equalTo: "#UserPwd"
// },
// Email:
// {
// email: true
// }
// },
// messages:
// {
// UserName:
// {
// required: "<span style='color:red'> ! </span>"
// },
// UserPwd:
// {
// required: "<span style='color:red'> !</span>",
// minlength: jQuery.format("<span style='color:red'> {0} !</span>")
// },
// ConfirPwd:
// {
// required: "<span style='color:red'> !<span>",
// minlength: jQuery.format(" {0} !"),
// equalTo: "<span style='color:red'> !</span>"
// },
// Email:
// {
// email: "<span style='color:red'> !</span>"
// }
// },
// onkeyup: false
// });
// });
</script>
</head>
<body>
<div>
<br />
<p style="font-size:12px;color:red">
<%if (ViewData["msg"] != null)
{%>
<%:ViewData["msg"]%>
<%} %>
</p>
<br />
<p>
<%:Html.ValidationSummary(true," !") %>
</p>
<%Html.BeginForm("Register", "user", FormMethod.Post, new { name="form1",id="form1"}) ; %>
<table>
<tr>
<td><%: Html.LabelFor(m => m.UserName) %></td>
<td> <%: Html.TextBoxFor(m => m.UserName) %></td>
<td><%:Html.ValidationMessageFor(m=>m.UserName) %></td>
</tr>
<tr>
<td> <%: Html.LabelFor(m => m.UserPwd) %></td>
<td> <%: Html.PasswordFor(m => m.UserPwd) %></td>
<td><%:Html.ValidationMessageFor(m=>m.UserPwd) %></td>
</tr>
<tr>
<td> <%: Html.LabelFor(m => m.ConfirPwd) %></td>
<td> <%: Html.PasswordFor(m => m.ConfirPwd)%></td>
<td><%:Html.ValidationMessageFor(m=>m.ConfirPwd) %></td>
</tr>
<tr>
<td> <%: Html.LabelFor(m => m.Email) %></td>
<td> <%: Html.TextBoxFor(m => m.Email) %></td>
<td><%:Html.ValidationMessageFor(m=>m.Email) %></td>
</tr>
<tr>
<td> <input type="submit" value=" " /></td>
<td></td>
<td></td>
</tr>
</table>
<%Html.EndForm(); %>
</div>
</body>
</html>
컨트롤 러 코드
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public ActionResult Register(Models.RegisterModel model)
{
if (ModelState.IsValid)
{
//
bool result = false;
if (!new Models.SqlHelper().ExistUser(model))
{
result = new Models.SqlHelper().AddUser(model);
}
if (result)
{
//
FormsService.SignIn(model.UserName, false);
return RedirectToAction("index");
}
else
{
//
ViewData["msg"] = " ";
return View(model);
}
}
else
{
//
//
ViewData["msg"] = " ";
return View(model);
}
}
이상 은 Asp.Mvc 2.0 사용자 서버 검증 사례 의 실현 전 과정 입 니 다.이전 클 라 이언 트 검증 과 결합 하여 연습 할 수 있 기 를 바 랍 니 다.이 글 이 Asp.Mvc 2.0 검증 기능 을 파악 하 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Asp.Mvc 2.0 사용자 로그 인 및 로그아웃 기능 인 스 턴 스 설명 실현(2)이 절 은 ASP.MVC 2.0 의 사용자 로그 인과 로그아웃 기능 을 설명 하고 로그 인 을 먼저 말 한 다음 에 로그아웃 을 말한다.우리 시리즈 에서 말 하 는 사용자 로그 인 방식 은 모두 FORM 폼 검증 방...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.