Asp.net mvc验证用户登录之Forms实现

  • 时间:2017-11-08
  • 分类:ASP.NET
  • 1057 人浏览
[导读]这里我们采用asp.net mvc自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样。

这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样。

第一步:创建asp.net mvc项目, 在项目的App_Start文件夹下面有一个FilterConfig.cs,在这个文件中可以注册全局的过滤器。我们在文件中添加AuthorizeAttribute过滤器如下:

第二步:在web.config配置文件中修改网站的身份认证为mode="Forms"

提示:配置name值作为最终生成的cookie的名称,loginUrl指定当用户未登入是跳转的页面,这里挑战到登入页面

第三步:添加用户登入相关的控制器和视图

创建LoginController控制器:

特别注意:Index和Login这两个方法得使用“[AllowAnonymous]”指明这两个方法可以匿名访问,否则由于过滤器不允许匿名访问,导致登入页面和用户提交都无法进行。显然这不是我们希望看到的。

提示:为了测试方便这边的用户的数据是写死的,用户的id也是临时生成了一个

创建登入视图:

提示:当检测到用户未登入,则跳转到web.config中配置的url页面,当用户填写密码并提交时,用户输入的数据会提交到LoginController控制器下的Login方法,验证用户的输入,认证失败重新返回到登入界面,当认证成功,将会执行

<<***FormsAuthHelp.AddFormsAuthCookie(user.Id, user, 60);//设置ticket票据的名称为用户的id,设置有效时间为60分钟***>>,这条语句的作用是生成一个ticket票据,并封装到cookie中,asp.net mvc正式通过检测这个cookie认证用户是否登入的,具体代码如下

第四步:将用户信息生成ticket封装到cookie中

第五步:测试执行

1. 启动网站输入相应的网址:如下图

  

2. 此时用户尚未登入将会跳转到登入界面:如下图

  

3. 输入错误的密码会重新跳转到登入界面并提示出错

  

4. 输入正确的用户名密码

  

5. 点击用户退出会删除掉cookie所以又会跳转到登入界面

 

 测试源码下载地址:链接: https://pan.baidu.com/s/1cm722q 密码: ut53

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!
标签: mvc Forms