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

2025-05-29 0 49

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

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

?

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
/// <summary>

/// 用户登陆模型

/// </summary>

public class UserLogin

{

/// <summary>

/// 用户名

/// </summary>

[Display(Name = "用户名", Description = "4-20个字符。")]

[Required(ErrorMessage = "×")]

[StringLength(20, MinimumLength = 4, ErrorMessage = "×")]

public string UserName { get; set; }

/// <summary>

/// 密码

/// </summary>

[Display(Name = "密码", Description = "6-20个字符。")]

[Required(ErrorMessage = "×")]

[StringLength(20, MinimumLength = 6, ErrorMessage = "×")]

[DataType(DataType.Password)]

public string Password { get; set; }

/// <summary>

/// 验证码

/// </summary>

[Display(Name = "验证码", Description = "请输入图片中的验证码。")]

[Required(ErrorMessage = "×")]

[StringLength(6, MinimumLength = 6, ErrorMessage = "×")]

public string VerificationCode { get; set; }

}

在UserController里添加Login action; 代码看如下:

?

1

2

3

4

5

6

7

8

9
public ActionResult Login()

{

return View();

}

[HttpPost]

public ActionResult Login(UserLogin login)

{

return View();

}

使用Cookie保存登陆账号,密码等信息,修改public ActionResult Login(UserLogin login)。修改完成代码如下:

  1. [HttpPost]
  2. publicActionResultLogin(UserLoginlogin)
  3. {
  4. //验证验证码
  5. if(Session["VerificationCode"]==null||Session["VerificationCode"].ToString()=="")
  6. {
  7. Error_e=newError{Title="验证码不存在",Details="在用户注册时,服务器端的验证码为空,或向服务器提交的验证码为空",Cause="<li>你注册时在注册页面停留的时间过久页已经超时</li><li>您绕开客户端验证向服务器提交数据</li>",Solution="返回<ahref='"+Url.Action("Register","User")+"'>注册</a>页面,刷新后重新注册"};
  8. returnRedirectToAction("Error","Prompt",_e);
  9. }
  10. elseif(Session["VerificationCode"].ToString()!=login.VerificationCode.ToUpper())
  11. {
  12. ModelState.AddModelError("VerificationCode","×");
  13. returnView();
  14. }
  15. //验证账号密码
  16. userRsy=newUserRepository();
  17. if(userRsy.Authentication(login.UserName,Common.Text.Sha256(login.Password))==0)
  18. {
  19. HttpCookie_cookie=newHttpCookie("User");
  20. _cookie.Values.Add("UserName",login.UserName);
  21. _cookie.Values.Add("Password",Common.Text.Sha256(login.Password));
  22. Response.Cookies.Add(_cookie);
  23. returnRedirectToAction("Default","User");
  24. }
  25. else
  26. {
  27. ModelState.AddModelError("Message","登陆失败!");
  28. returnView();
  29. }
  30. }

在public ActionResult Login() 上右键添加强类型视图

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

完成后代的Login.cshtml

?

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

52

53

54

55

56

57

58

59

60

61

62
@model CMS.Models.UserLogin

@{

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.UserName):</div>

<div class="ctrl">@Html.EditorFor(model => model.UserName)

@Html.ValidationMessageFor(model => model.UserName)

@Html.DisplayDescriptionFor(model => model.UserName)

</div>

</dd>

<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">验证码:</div>

<div class="ctrl">

@Html.TextBoxFor(model => model.VerificationCode)

@Html.ValidationMessageFor(model => model.VerificationCode)

<img id="verificationcode" alt="" src="@Url.Action("VerificationCode", "User")" />

<a id="trydifferent" style="cursor: pointer">换一张</a>

</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>

}

<script type="text/javascript">

$("#trydifferent").click(function () {

$("#verificationcode").attr("src", "/User/VerificationCode?" + new Date());

})

</script>

@section Scripts {

@Scripts.Render("~/bundles/jqueryval")

}

浏览器中查看一下登陆页面

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

点下登陆测试一下。OK登陆成功

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

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

?

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
using Ninesky.Repository;

namespace System.Web.Mvc

{

/// <summary>

/// 用户权限验证

/// </summary>

public class UserAuthorizeAttribute :AuthorizeAttribute

{

/// <summary>

/// 核心【验证用户是否登陆】

/// </summary>

/// <param name="httpContext"></param>

/// <returns></returns>

protected override bool AuthorizeCore(HttpContextBase httpContext)

{

//检查Cookies["User"]是否存在

if (httpContext.Request.Cookies["User"] == null) return false;

//验证用户名密码是否正确

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

string _userName = _cookie["UserName"];

string _password = _cookie["Password"];

httpContext.Response.Write("用户名:"+_userName);

if (_userName == "" || _password == "") return false;

UserRepository _userRsy = new UserRepository();

if (_userRsy.Authentication(_userName, _password) == 0) return true;

else return false;

}

}

}

以后只要在需要登陆后才能操作的Action或Controller上加[UserAuthorize]就可实现验证是否已经登录了。
退出功能,在UserController添加Logout Action

  1. ///<summary>
  2. ///退出系统
  3. ///</summary>
  4. ///<returns></returns>
  5. publicActionResultLogout()
  6. {
  7. if(Request.Cookies["User"]!=null)
  8. {
  9. HttpCookie_cookie=Request.Cookies["User"];
  10. _cookie.Expires=DateTime.Now.AddHours(-1);
  11. Response.Cookies.Add(_cookie);
  12. }
  13. Notice_n=newNotice{Title="成功退出",Details="您已经成功退出!",DwellTime=5,NavigationName="网站首页",NavigationUrl=Url.Action("Index","Home")};
  14. returnRedirectToAction("Notice","Prompt",_n);
  15. }

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

原文链接:http://www.cnblogs.com/mzwhj/archive/2012/10/30/2746494.html

收藏 (0) 打赏

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

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

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

快网idc优惠网 建站教程 MVC4制作网站教程第二章 用户登陆2.2 https://www.kuaiidc.com/100232.html

相关文章

发表评论
暂无评论