Asp的解释 Mvc 2.0用户服务器验证示例(4)
本节解释了MVC 2.0的服务器端身份验证在ASP.NET的使用。众所周知,对一个项目使用JS客户端身份验证是不安全的。用户可以禁用JS绕过客户端认证,所以一定要有服务器认证。关于服务器端验证,系统中的类库。主要调用componentmodel.dataannotations命名空间。这次我们以注册页面为例来说明服务器端验证,主要是在注册页面完成下面的验证。1.用户名不能为空。2.密码不能为空,密码长度不能少于5位。3.密码和确认密码必须输入相同。4.邮件格式必须正确。先看效果图。
为了验证MVC中的所有字段,实际上只需要在MODEL层中设置验证规则。1.用户名验证要验证用户名,您只需验证用户名不为空。使用必需属性,并将该属性绑定到模型的用户名字段。
///summary////username////summary[display name(' username ')][必选(ErrorMessage=' username不能为空!')]公共字符串UserName { get设置;} required中的参数表示具体的提示信息。如果用户名为空,提示用户名不能为空将出现在前台的ASPX页面上。当然,错误的消息应该显示在前台。使用3360html。validation message for(m=m . username)%标记在前台显示错误消息。2.密码验证密码验证包括密码不能为空和密码长度限制。当验证密码为空时,使用必需属性,就像验证用户名为空一样。使用StringLength属性验证密码的长度。
///summary///password///summary[display name(' password ')][必选(ErrorMessage=' password不能为空')] [stringlength (10,errormessage=' password length不能小于5位数',minimumlength=5)]公共字符串userpwd { get设置;} string length的第一个参数表示密码的最大长度,ErrorMessage表示不满足条件时的错误消息。最小长度表示输入内容的最小长度。当然,前台必须有一个地方显示错误消息。我们使用以下3360 html。(m=m. userpwd)% 3的验证消息。验证密码是否一致。要验证密码与确认密码是否一致,这个有点复杂,需要自定义验证规则。为了定制验证规则,我们需要继承ValidationAttribute类,然后实现它的isvaild方法。
///摘要///此自定义类用于验证密码和确认密码必须一致////摘要[属性用法(属性目标.类,AllowMultiple=true,Inherited=true)]公共类PwdMatch :验证属性{ private object _ type id=new object();公共字符串PWD { get;设置;}//密码公共字符串确认{ get设置;}//确认密码公共PwdMatch(字符串pwd,字符串确认pwd): base(){ PWD=pwd;ConfirmPwd=confirmPwd} ///摘要///返回错误的提示信息////summary////param name=' name '/param////returns/returns public override string FormatErrorMessage(字符串名称){返回错误消息}////摘要///重写TYPeID////摘要公共重写对象TypeId { get { return _ typeid} } ///摘要///判断是否想到////summary////param name=' value '值的值实际上是模型提交的模型类/param///returns/returns public override bool有效(对象值){ propertysdescriptor collection properties=type descriptor .GetProperties(值);对象原始值=属性。找到(PWD,真的)。GetValue(值);//获取密码对象确认值=属性查找(确认,真).GetValue(值);//获取确认密码的值返回对象。等于(原始值,确认值);} } PwdMatch属性类创建后,可把它标记在注册模型的上面,然后提交注册的时候,就会验证了[PwdMatch('UserPwd ',' ConfirPwd ',ErrorMessage='密码?与?确认?不?匹配?)]公共类RegisterModel{ }PwdMatch的第一个参数表上密码,名称与RegisterModel中的密码属性相同,第二个字段是确认密码,名称与RegisterModel与的确认密码属性相同,最后一个参数是错误提示信息。当然,也要在前台显示错误提示信息,使用3360Html .有效性摘要(真),用?户创 建失败 !')%就可以在前台显示一个总的错误信息列表。4.邮箱验证邮箱验证主要是邮箱格式验证,验证格式是否满足要求。验证邮箱我们使用正则表达式属性就可以。
///摘要///用户邮箱////摘要[显示名称('邮箱)]//[数据类型(数据类型。电子邮件地址)][regularexpression(@'^\w((-\(w)|(\).*\@[A-Za-z0-9] ((\ .|-)[A-Za-z0-9] )*\ .[A-Za-z0-9] $ ',错误消息='电子邮件格式错误)]公共字符串电子邮件{ get设置;} 第一个参数邮箱验证的正则表达式,第二个参数是错误提示信息。在ASPX页面显示错误信息用3360Html .验证消息(m=m封电子邮件)%以上是对用户注册信息的验证,当然,我们在提交信息的时候,要判断验证是否通过,我们使用ModelState .IsValid来判断验证是否通过,真表示通过,FALSE表示未通过模型。代码:
///摘要///注册用户MODEL////summary[PwdMatch(' UserPwd ',' ConfirPwd ',ErrorMessage='密码与确认不匹配)]公共类RegisterModel { ///summary ///用户名////摘要[显示名称('用户名)][必需(错误消息='用户名不能为空!')]公共字符串用户名{ get设置;} ///摘要///密码////摘要[显示名称('密码)][必需(错误消息='密码不能为空)][字符串长度(10,错误消息='密码长度不能小于5位,MinimumLength=5)]公共字符串UserPwd { get设置;} [DisplayName('确认密码)][必需(错误消息='确认密码不能为空!')][字符串长度(10,错误消息='确认密码长度不能小于5位,MinimumLength=5)]公共字符串ConfirPwd { get设置;} ///摘要///用户邮箱////摘要[显示名称('邮箱)]//[数据类型(数据类型。电子邮件地址)][regularexpression(@'^\w((-\(w)|(\).*\@[A-Za-z0-9] ((\ .|-)[A-Za-z0-9] )*\ .[A-Za-z0-9] $ ',错误消息='电子邮件格式错误)]公共字符串电子邮件{ get设置;} } ///摘要///此自定义类用于验证密码和确认密码必须一致////摘要[属性用法(属性目标.类,AllowMultiple=true,Inherited=true)]公共类PwdMatch :验证属性{ private object _ type id=new object();公共字符串PWD { get;设置;}//密码公共字符串确认{ get设置;}//确认密码公共PwdMatch(字符串pwd,字符串确认pwd): base(){ PWD=pwd;ConfirmPwd=confirmPwd} ///摘要///返回错误的提示信息////summary////param name=' name '/param////returns/returns public override string FormatErrorMessage(字符串名称){返回错误消息}////摘要///重写TYPeID////摘要公共重写对象TypeId { get { return _ typeid} } ///摘要///判断是否想到////summary////param name=' value '值的值实际上是模型提交的模型类/param///returns/returns public override bool有效(对象值){ propertysdescriptor collection properties=type descriptor .GetProperties(值);对象原始值=属性。找到(PWD,真的)。GetValue(值);//获取密码对象确认值=属性查找(确认,真).GetValue(值);//获取确认密码的值返回对象。等于(原始值,确认值);} } 前台页面代码
"%@"页面语言="c# "继承="系统"。网络。MVC。viewpagemvclogin。模特。注册模型“%!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。org/TR/XHTML 1/DTD/XHTML 1-Transitional。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head runat=' server ' title注册页面/title脚本类型=' text/JavaScript ' src=' http :/./Scripts/jquery-1。4 .1-vsdoc。js/脚本脚本类型=' text/JavaScript ' src=' http :/./Scripts/jquery。验证。js '/script脚本类型=' text/JavaScript '/$().ready(function () { //$('#form1 ')).验证(///{//规则s ://{//用户名://{//必需d : true//},//UserPwd ://{//必需d : true,//minlength: 6/},//confirpwd ://{//必需d : true,//minlength: 6,//等于: ' # UserPwd '/},//email 33333:用户名不能为空!/span' //},//user pwd 3360//{//必需d : ' span style=' color : red '密码不能为空!/span ',//最小长度: jquery。格式(' span style=' color : red '密码长度不能小于{0}个字符!/span') //},//confirpwd ://{//必需d : ' span style=' color : red '确认密码不能为空!span ',//minlength: jQuery.format('确认密码长度不能小于{0}个字符!'),//等于: ' span style=' color : red '两次输入密码不一致!/span' //},//Email ://{//Email : ' span style=' color : red '邮箱输入格式不正确!/span' //} //},//onkey up : false/});//});/script/head body div br/p style=' font-size :12 px;color : red ' % if(ViewData[' msg ']!=null){ % 3360查看数据[' msg ']% % } %/p br/p 3360 html .有效性摘要(真),用户创建失败!)% /p %Html .开始通知('注册','用户,表单方法Post,new { name='form1 ',id=' form 1 ' });tr表td3360 Html .标签为(m=m . UserName)%/TD TD TD 3360 Html .(m=m . UserName)%/TD TD 3360 HTMl的文本框.validationmessageFOr(m=m . USername)%/TD/tr tr TD 3360 Html .标签为(m=m . UserPwd)%/TD TD TD 3360 Html .password FOr(m=m . UserPwd)%/TD TD 3360 HTMl .ValidationMessageFor(m=m . UserPwd)%/TD/tr TD 3360 Html .标签为(m=m . ConfirPwd)%/TD TD TD 3360 Html .password FOr(m=m . ConfirPwd)%/TD TD TD 3360 HTMl .ValidationMessageFor(m=m . ConfirPwd)%/TD/tr TD 3360 Html .标签为(m=m . Email)%/TD TD TD 3360 Html .文本框为(m=m . Email)%/TD TD TD 3360 html .验证消息为(m=m . Email)%/TD/tr tr TD输入类型='提交'值='提交//TD/TD/TD/TD/tr/table % Html .结束形式();% /div /body /html控制器代码
///摘要///注册提交////summary////param name=' model '/param///returns/returns[httpset]公共操作结果寄存器(Models .RegisterModel模型){ if (ModelState .IsValid) { //验证通过弯曲件结果=falseif(!新车型SqlHelper().现有用户(模型)){结果=新模型SqlHelper().添加用户(模型);} if (result) { //添加成功转向主页表单服务。登录(模型. UserName,false);返回redirectToAction(' index ');} else { //返回注册页面ViewData['msg']='添加用户失败;返回视图(模型);} } else { //验证不通过//返回注册页面ViewData['msg']='添加用户失败;返回视图(模型);} }以上就是Asp .Mvc 2.0用户服务器验证实例的实现全过程,希望大家可以结合上一篇客户端验证进行练习,希望这篇文章可以更好地帮助大家掌握Asp .Mvc 2.0验证功能。
版权声明:Asp的解释 Mvc 2.0用户服务器验证示例(4)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。