MVC4制作网站教程第二章 用户密码修改2.3

2025-05-29 0 83

一用户
1.1用户注册
1.2用户登录
1.3修改密码

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
/// <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函数

?

1

2

3

4

5

6

7

8

9

10

11

12
/// <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) 函数

?

1

2

3

4

5

6

7

8

9
/// <summary>

/// 查找用户

/// </summary>

/// <param name="UserName">用户名</param>

/// <returns></returns>

public User Find(string UserName)

{

return dbContext.Users.SingleOrDefault(u => u.UserName == UserName);

}

好了打开UserController,添加ChangePassword Action

  1. ///<summary>
  2. ///修改密码
  3. ///</summary>
  4. ///<returns></returns>
  5. [UserAuthorize]
  6. publicActionResultChangePassword()
  7. {
  8. returnView();
  9. }
  10. [HttpPost]
  11. [UserAuthorize]
  12. publicActionResultChangePassword()
  13. {
  14. returnView();
  15. }

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51
@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()以实现修改密码,修改完成的代码如下:

  1. [HttpPost]
  2. [UserAuthorize]
  3. publicActionResultChangePassword(UserChangePassworduserChangePassword)
  4. {
  5. userRsy=newUserRepository();
  6. if(userRsy.Authentication(UserName,Common.Text.Sha256(userChangePassword.Password))==0)
  7. {
  8. var_user=userRsy.Find(UserName);
  9. if(_user==null)
  10. {
  11. Error_e=newError{Title="修改密码失败",Details="修改密码时,系统查询不到用户信息",Cause=Server.UrlEncode("<li>用户在修改密码界面停留的时间过长,登录信息已失效。</li><li>系统错误。</li>"),Solution=Server.UrlEncode("<li>返回<ahref='"+Url.Action("ChangePassword","User")+"'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>")};
  12. returnRedirectToAction("Error","Prompt",_e);
  13. }
  14. _user.Password=Common.Text.Sha256(userChangePassword.NewPassword);
  15. if(userRsy.Update(_user))
  16. {
  17. Notice_n=newNotice{Title="成功修改密码",Details="您已经成功修改密码,请牢记您的新密码!",DwellTime=5,NavigationName="登陆页面",NavigationUrl=Url.Action("Login","User")};
  18. returnRedirectToAction("Notice","Prompt",_n);
  19. }
  20. else
  21. {
  22. Error_e=newError{Title="修改密码失败",Details="修改密码时,更新数据库失败!",Cause=Server.UrlEncode("<li>系统错误。</li>"),Solution=Server.UrlEncode("<li>返回<ahref='"+Url.Action("ChangePassword","User")+"'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>")};
  23. returnRedirectToAction("Error","Prompt",_e);
  24. }
  25. }
  26. else
  27. {
  28. ModelState.AddModelError("Password","原密码不正确,请重新输入");
  29. returnView();
  30. }
  31. }

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

?

1

2

3

4

5

6

7

8

9

10
/// <summary>

/// 获取用户名

/// </summary>

public string UserName {

get {

HttpCookie _cookie = Request.Cookies["User"];

if (_cookie == null) return "";

else return _cookie["UserName"];

}

}

好了,浏览器中预览一下

MVC4制作网站教程第二章 用户密码修改2.3

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.cnblogs.com/mzwhj/archive/2012/11/01/2748310.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 MVC4制作网站教程第二章 用户密码修改2.3 https://www.kuaiidc.com/99912.html

相关文章

发表评论
暂无评论