学用MVC4做网站一:修改密码1.3

news/2024/5/8 20:47:54/文章来源:https://blog.csdn.net/weixin_33893473/article/details/85524290

一用户

1.1用户注册

1.2用户登录

1.3修改密码

修改密码会用到一个UserChangePassword 模型类,先添加UserChangePassword类

/// <summary>/// 用户修改密码模型/// </summary>
    [NotMapped]public class UserChangePassword{/// <summary>/// 原密码/// </summary>[Display(Name = "原密码")][Required(ErrorMessage = "×")][StringLength(20, MinimumLength = 6, ErrorMessage = "×")][DataType(DataType.Password)]public string Password { get; set; }/// <summary>/// 新密码/// </summary>[Display(Name = "新密码", Description = "6-20个字符。")][Required(ErrorMessage = "×")][StringLength(20, MinimumLength = 6, ErrorMessage = "×")][DataType(DataType.Password)]public string NewPassword { get; set; }/// <summary>/// 确认密码/// </summary>[Display(Name = "确认密码", Description = "再次输入密码。")][Compare("NewPassword", ErrorMessage = "×")][DataType(DataType.Password)]public string ConfirmPassword { get; set; }}

用到了数据库的更新,先打开UserRepository.cs 修改Update函数

/// <summary>/// 更新用户信息/// </summary>/// <param name="user"></param>/// <returns></returns>public override bool Update(User user){dbContext.Users.Attach(user);dbContext.Entry<User>(user).State = System.Data.EntityState.Modified;if (dbContext.SaveChanges() > 0) return true;else return false;}

在修改密码时需要查出用户信息并更新,需要添加Find(string UserName) 函数

/// <summary>/// 查找用户/// </summary>/// <param name="UserName">用户名</param>/// <returns></returns>public User Find(string UserName){return dbContext.Users.SingleOrDefault(u => u.UserName == UserName);}

好了打开UserController,添加ChangePassword Action

/// <summary>/// 修改密码/// </summary>/// <returns></returns>
        [UserAuthorize]public ActionResult ChangePassword(){return View();}[HttpPost][UserAuthorize]public ActionResult ChangePassword(){return View();}

添加强类型(UserChangePassword)视图,在视图中添加三个文本框,修改后的视图代码

@model Ninesky.Models.UserChangePassword
@{ ViewBag.Title = "修改密码";Layout = "~/Views/Shared/_Layout.cshtml";
}<div class="banner"><img src="~/Skins/Default/Images/banner.jpg" />
</div>@using (Html.BeginForm())
{@Html.ValidationSummary(true)<div class="form"><dl><dt>修改密码</dt><dd><div class="label">@Html.LabelFor(model => model.Password):</div><div class="ctrl">@Html.PasswordFor(model => model.Password)@Html.ValidationMessageFor(model => model.Password)@Html.DisplayDescriptionFor(model => model.Password)</div></dd><dd><div class="label">@Html.LabelFor(model => model.NewPassword):</div><div class="ctrl">@Html.PasswordFor(model => model.NewPassword)@Html.ValidationMessageFor(model => model.NewPassword)@Html.DisplayDescriptionFor(model => model.NewPassword)</div></dd><dd><div class="label">@Html.LabelFor(model => model.ConfirmPassword):</div><div class="ctrl">@Html.PasswordFor(model => model.ConfirmPassword)@Html.ValidationMessageFor(model => model.ConfirmPassword)@Html.DisplayDescriptionFor(model => model.ConfirmPassword)</div></dd><dd><div class="label"></div><div class="ctrl"><input type="submit" value="修改密码" />@Html.ValidationMessage("Message")</div></dd></dl><div class="clear"></div></div>
}
@section Scripts {@Scripts.Render("~/bundles/jqueryval")
}

修改UserController中[HttpPost]方式的ChangePassword()以实现修改密码,修改完成的代码如下:

[HttpPost][UserAuthorize]public ActionResult ChangePassword(UserChangePassword userChangePassword){userRsy = new UserRepository();if (userRsy.Authentication(UserName, Common.Text.Sha256(userChangePassword.Password)) == 0){var _user = userRsy.Find(UserName);if (_user == null){Error _e = new Error { Title = "修改密码失败", Details = "修改密码时,系统查询不到用户信息", Cause = Server.UrlEncode("<li>用户在修改密码界面停留的时间过长,登录信息已失效。</li><li>系统错误。</li>"), Solution = Server.UrlEncode("<li>返回<a href='" + Url.Action("ChangePassword", "User") + "'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>") };return RedirectToAction("Error", "Prompt", _e);}_user.Password = Common.Text.Sha256(userChangePassword.NewPassword);if (userRsy.Update(_user)){Notice _n = new Notice { Title = "成功修改密码", Details = "您已经成功修改密码,请牢记您的新密码!", DwellTime = 5, NavigationName = "登陆页面", NavigationUrl = Url.Action("Login", "User") };return RedirectToAction("Notice", "Prompt", _n);}else{Error _e = new Error { Title = "修改密码失败", Details = "修改密码时,更新数据库失败!", Cause = Server.UrlEncode("<li>系统错误。</li>"), Solution = Server.UrlEncode("<li>返回<a href='" + Url.Action("ChangePassword", "User") + "'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>") };return RedirectToAction("Error", "Prompt", _e);}}else{ModelState.AddModelError("Password", "原密码不正确,请重新输入");return View();}}

在上面的代码中用到了一个UserName属性,这个是在UserController添加的属性用于返回Cookie中保存的用户名

/// <summary>/// 获取用户名/// </summary>public string UserName { get {HttpCookie _cookie = Request.Cookies["User"];if (_cookie == null) return "";else return _cookie["UserName"];}}

好了,浏览器中预览一下

image

测试一下,OK,大功告成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_706518.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站后台架构的演变

随着用户访问量的不断增加&#xff0c;网站的后台也会不断变化以应对需求。本文主要从一个小型网站到大型网站的过度与变化来陈述。 1.1 网站后台架构 主要指由web server 、应用服务器、数据库、存储、监控等组成的网站后台系统。 1.2 架构演变 个人站点后台架构。如图2-1所示…

学用MVC4做网站五:5.6文章浏览(前台)

今天做文章的前台文章列表。 前台显示比较简单只显示文章标题和发布日期。 首先添加CommonModelController using Ninesky.Models; using Ninesky.Repository; using System.Web.Mvc;namespace Ninesky.Controllers {public class CommonModelController : Controller{private …

使用 Chrome 开发者工具研究一个基于 Angular 开发的网站源代码

Chrome 开发者工具是前端开发工程师工具箱里使用频率最高的工具之一。 本文通过一个具体的例子&#xff0c;给大家分享笔者工作中&#xff0c;是如何通过 Chrome 开发者工具&#xff0c;分析一个网站的实现明细。 下图是 SAP Commerce Cloud(电商云) UI 加载默认的 SampleDat…

【知云】第十二期:处于风口浪尖上的直播视频网站,如何快速部署直播监管?...

摘要&#xff1a;广电总局要求视频直播网站的视频内容保存两个月以上&#xff0c;针对于这样的要求&#xff0c;视频直播网站有没有简单快捷的部署方式呢&#xff1f;本文中阿里云布道师爅冉将与大家分享阿里云直播监管冷存储解决方案。 想要看视频版&#xff1f;请点击这里&am…

网站上的 breadcrumb 使用场景浅析

下图是 SAP Spartacus 电商云 UI 的 breadcrumb Angular Cloud Portal 的源代码。Component 的 crumbs$ 数据&#xff0c;通过结构化指令 *ngFor 展开&#xff0c;然后通过 span 和 a 标签渲染。 breadcrumb 的 Component 区域仅限于此&#xff1a; “breadcrumb”&#xff08;…

ASP网站精品源码集合(免积分下载)

2019独角兽企业重金招聘Python工程师标准>>> 古话说的好&#xff1a;纸上得来终觉浅&#xff0c;绝知此事要躬行。对于学习建设网站的同学光看书那肯定是不够的 。所以我为大家准备了一些实际网站建设的案例和模板&#xff0c;全是可以运行的ASP源代码。希望大家喜欢…

2020各大网站rss订阅源地址_RSS订阅器inoreader一些使用心得

站长寄语站长之前详细介绍过如何通过rss订阅各大网站&#xff0c;所谓万物皆可RSS&#xff0c;如果想了解&#xff0c;可以在本站搜索rss即可&#xff0c;而这次站长想聊一聊使用inoreader的一些使用心得&#xff0c;另外一款feedly也是一款不错的rss接收工具&#xff0c;但是站…

查找窗口隐藏了怎么办_如何快速查找网站管理页面

很多时候&#xff0c;对任何URL进行扫描以查找其漏洞时&#xff0c;渗透测试者或安全研究人员都会尝试查找管理页面&#xff08;“ admin”&#xff0c;控制面板或登录名&#xff09;。登陆任何网站的任何管理页面是任何网站的严重漏洞。攻击者可以运行会话劫持攻击或使用蛮力方…

100个程序员学习的网站

1 程序员论坛&#xff1a;http://www.gxcxy.com 2 J2me社区 http://www.j2meforums.com/forum/ 3 csdn http://www.csdn.net/ 4 Vc知识库 http://www.vckbase.com/ 5 codeproject http://www.codeproject.com/ 6 程序员联合开发网 http://www.pudn.com/ 7 看雪学院 http://www.…

拿访问网站用户IP 纯JS实现

后台拿IP Java代码 String ip request.getHeader("X-Forwarded-For");if (ip null || ip.length() 0|| "unknown".equalsIgnoreCase(ip)) {ip request.getHeader("Proxy-Client-IP");}if (ip null || ip.length() 0|| "unknown"…

在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式

Service Worker 缓存 API 的一个主要优点是它为您提供了比内置浏览器缓存更详细的控制。 例如&#xff0c;Service Worker 可以在用户首次运行您的 Web 应用程序时缓存多个请求&#xff0c;包括他们尚未访问的资产。 这将加快后续请求。 还可以实现自己的缓存控制逻辑&#xff…

如何使用 saplink 安装其他网站上提供的 ABAP 程序

本教程一个朋友留言,想了解如何用 ABAP 编程语言生成一个 Word 文档。 笔者将在此教程介绍的一种方式,需要用到一个标准的 SAP ABAP 系统上并不存在的工具库,这个工具库,需要使用专门的工具来安装,这个工具的名称,就叫做 SAPLink,这是它的官网。 本文介绍如何将最新版…

如何使用 saplink 安装其他网站上提供的 ABAP 程序试读版

零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一&#xff1a;ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二&#xff1a;Cross-client 和 Client-specific 的区别 ABAP 标准培训教程 BC400 学习笔记之三…

带你走进网站分析的世界!

来源&#xff1a;书籍《网站分析实战》读书笔记第42篇▼ &#xff08;本文框架&#xff09;网站分析基本概念网站分析的目的&#xff1a;首先明确网站的目的是什么&#xff1f;大部分网站的目的是盈利&#xff0c;而网站分析的目的就是为了更好的完成网站的目的。网站分析流程&…

易语言https服务器,E2EE应用服务器套件 - 文档 - [基础教程] 使用HTTPS(SSL) - E2EE易语言网站敏捷开发框架...

使用HTTPS(SSL)1.申请证书首先您需要申请SSL/TLS证书。介绍几个免费SSL证书申请网站&#xff1a;申请证书的方式网上有很多相关资料&#xff0c;这里就不多做说明了。申请证书后通常会有以下三个文件&#xff1a;[SSL密匙] privkey.pem[SSL证书] cert.pem[SSL签名] chain.pem2.…

8月第4周国内IT网站/频道Top15:太平洋降至第三

IDC评述网(idcps.com)08月29日报道&#xff1a;根据国际统计机构Alexa公布的最新数据显示&#xff0c;8月第4周&#xff08;2013-08-19至2013-08-25&#xff09;&#xff0c;我国IT类网站/频道中&#xff0c;IT168以5750的用户覆盖数首次居于第一位&#xff1b;而泡泡网排在了第…

查看linux服务器下接设备,linux下如何查看设备信息_网站服务器运行维护

linux下如何查看php是否启动_网站服务器运行维护linux下查看php是否启动的方法是&#xff1a;可以通过执行【ps -ef | grep php】命令来查看&#xff0c;或者是通过执行【ps -A | grep -i php】命令查看。如果需要开启php&#xff0c;可以执行【php-fpm start】命令。查看pci设…

《社交网站界面设计(原书第2版)》——2.11 提问

2.11 提问 人们对话或者交谈时最常见的形式就是一问一答&#xff08;图2-10和图2-11&#xff09;。最早的邮件列表、Usenet和Gopher&#xff0c;以及常见问题列表&#xff08;FAQs&#xff09;都是通过收集大众的智慧或一些权威人士的答案来回答人们的问题。 人们自然会有疑问…

要分析数据,可以先去这些数据网站找数据

作者&#xff1a;帆软来源&#xff1a;知乎金融财经数据同花顺数据中心&#xff1a;提供股票债券等金融数据和讯数据&#xff1a;提供各种股票、基金、外汇、债券等实时数据&#xff0c;有付费&#xff0c;有免费零壹财经&#xff1a;大大小小的网贷数据、排行榜等金融数据网&a…

利用python爬虫(案例1)--某电影网站的小电影们

学习笔记 前言:此案例中,要求抓取某电影网站内【最新电影栏目】里的电影名称,以及该电影的下载链接,并将这些数据存储在数据库中。 案例(某电影网站数据抓取) 首先,确定要爬取的某电影网站的URL地址 https://www.ygdy8.net/html/gndy/dyzz/index.html 查看网页是否为静…