手机版

MVC4制作网站教程第二章用户登陆2.2

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

一用户1.1用户注册1.2用户登陆

首先在模型里添加用户登陆模型类用户登录,该类只要用用户名,密码和验证码三个字段。

///摘要///用户登陆模型////摘要公共类用户登录{ ///摘要///用户名////摘要[显示(名称='用户名,描述='4-20个字符)][必选(错误消息='')][字符串长度(20,最小长度=4,错误消息='')]公共字符串用户名{ get设置;} ///摘要///密码////摘要[显示(名称='密码,描述='6-20个字符)][必选(错误消息='')][字符串长度(20,最小长度=6,错误消息='')][数据类型(数据类型.密码])公共字符串密码{ get设置;} ///摘要///验证码////摘要[显示(名称='验证码,描述='请输入图片中的验证码)][必选(错误消息='')][字符串长度(6,最小长度=6,错误消息='')]公共字符串VerificationCode { get设置;} }在用户控制器里添加登录操作;代码看如下:

公共操作结果登录(){返回视图();}[httpset]公共操作结果登录(用户登录登录){ return View();}使用饼干保存登陆账号,密码等信息,修改公共操作结果登录(用户登录登录).修改完成代码如下:

[https]公共操作结果登录(用户登录登录){ //验证验证码if(会话['验证代码']==null | |会话['验证代码'].ToString()=='') { Error _e=新错误{ Title='验证码不存在'详细信息='在用户注册时,服务器端的验证码为空,或向服务器提交的验证码为空因为你注册时在注册页面停留的时间过久页已经超时/莉莉您绕开客户端验证向服务器提交数据/li '解决方案='返回a href=' ' Url .操作('注册''用户)注册/a页面,刷新后重新注册' };返回RedirectToAction('Error ',' Prompt ',_ e);}否则如果(会话['验证代码'].ToString()!=登录验证代码。Toupper()){模型状态.addmodelarror(' VerificationCode ','');返回视图();} //验证账号密码usersy=新用户存储库();if(usersy .验证(登录。用户名,常用。文字。Sha256(登录。密码))==0){ httpookie _ cookie=new httpookie(' User ');_cookie .值。添加('用户名,登录。用户名);_cookie .值。添加('密码,常用。文字。Sha256(登录。密码));回应饼干。添加(_ cookie);返回重定向操作("默认"、"用户");} else { ModelState .添加建模错误('消息','登陆失败!');返回视图();} }在公共操作结果登录()上右键添加强类型视图

完成后代的Login.cshtml

@型号内容管理系统.模型。用户登录@{视图包标题='用户登陆;布局=' ~/视图/共享/_布局。“cshtml”;} div class=' banner ' img src=' http : ~/Skins/Default/Images/banner。jpg '/div @使用(Html .begin inform()){ @ Html .ValidationSummary(true)div class=' form ' dl dt用户登陆/dt dd div class='label'@Html .标签(型号=型号.UserName):/div div class=' ctrl ' @ Html .编辑(模型=模型.UserName) @Html .ValidationMessageFor(model=model .UserName) @Html .显示(模型=模型1)的描述.UserName)/div/DD DD div class=' label ' @ Html .标签(型号=型号.密码):/div div class='ctrl'@Html .PasswordFor(model=model .密码)@Html .ValidationMessageFor(model=model .密码)@Html .显示(模型=模型1)的描述.密码)/div/DD div class='标签'验证码:/div div class='ctrl' @Html .TextBoxFor(model=model .VerificationCode) @Html .ValidationMessageFor(model=model .VerificationCode)img id=' VerificationCode ' alt=' src=' http : @ URl .操作('验证代码','用户)/a id=“尝试不同的”样式=“光标:指针'换一张/a/div/DD/DD div class=' label '/div class=' ctrl '输入类型='submit '值='登陆/@Html .验证消息("消息");/div/DD/dl div class=' clear '/div/div }脚本类型=' text/JavaScript ' $(' #尝试不同的').单击(function(){ $(' # verificationcode ')).attr('src ','/用户/验证代码'?新日期());})/script @ section Scripts { @ Scripts .渲染(' ~/bundle/jqueryval ')}浏览器中查看一下登陆页面

点下登陆测试一下好的登陆成功

验证用户是否已经登陆,这块和权限验证一起从AuthorizeAttribute继承个自定义验证类

在项目里添加扩展扩张文件夹,添加一个类UserAuthorizeAttribute继承自AuthorizeAttribute,重写AuthorizeCore方法用来实现用户是否已经登陆的验证,权限验证在写权限功能时在补充

使用尼尼微。存储库;系统命名空间网络。Mvc{ ///summary //用户权限验证////摘要公共类用户author ize attribute : author ize attribute {///摘要///核心【验证用户是否登陆】////summary////param name=' httpContext '/param////returns/returns protected override bool AuthorizeCore(HttpContextBase httpContext){//检查饼干用户]是否存在if (httpContext .请求Cookies'用户']==空)返回false//验证用户名密码是否正确HttpCookie _ cookie=httpContext .请求饼干用户'];string _ userName=_ cookie[' userName '];string _ Password=_ cookie[' Password '];httpContext .回应。写下('用户名: ' _ userName);如果(_用户名==' ' | | _密码==' ')返回false user repository _ user rsy=new user repository();if(_ usersy).身份验证(_用户名,_密码)=0)返回真实的否则返回false} }}以后只要在需要登陆后才能操作的行动或控制器上加[用户授权]就可实现验证是否已经登录了。退出功能,在用户控制器添加注销操作

///摘要///退出系统////summary////返回/返回公共操作结果Logout(){ if(Request .饼干用户']!=空){ httpookie _ cookie=请求.饼干用户'];_cookie .过期时间=日期时间.现在。添加小时(-1);回应饼干。添加(_ cookie);}通知_n=新通知{标题='成功退出'详细信息='您已经成功退出!',停留时间=5,导航名称='网站首页,NavigationUrl=Url .操作('索引','主页')};返回RedirectToAction('Notice ',' Prompt ',_ n);}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:MVC4制作网站教程第二章用户登陆2.2是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。