ASP.NET MVC授权过滤器如何使用


这篇文章主要介绍“ASP.NETMVC授权过滤器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NETMVC授权过滤器如何使用”文章能帮助大家解决问题。过滤器(Filter)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,并不是每个请求都会响应内容,只有那些有特定权限的用户才能响应特定的内容。过滤器理论上有以下功能:判断登录与否或者用户权限。决策输出缓存。防盗链。防蜘蛛。本地化与国际化设置。实现动态Action(做权限管理系统经常用到)。第一种方法是在Controller或Action上面直接使用Authorize特性,不设置特性的任何属性。看下面的截图:从上面的截图中可以看出:第一个名为Index的Action方法是没有过滤的,任何身份的请求都可以通过。只需要在浏览器的URL地址栏里面输入:http://localhost:**/Admin/Index就能得到对应的视图响应,效果如下:而第二个名为Welcome的Action方法上面使用了Authorize特性,表示这是一个只处理那些通过身份验证的URL的请求,页面请求效果如下:这时可以看到报错了:提示只有通过身份验证的用户才能访问请求所需的资源。这种报错页面很不友好,一般这种情况都是跳转到登录页面让用户进行登录,所以对程序进行如下的改造。新建Account控制器,并新建两个Action方法,代码如下:LogOnViewModel是用户登录实体类,定义如下:LogOn视图页代码如下:在上面的案例中,如果权限认证没有通过会显示错误页面,这种情况下要跳转到登录页面让用户进行登录,所以要再配置文件里面配置登录页面,如果没有通过身份认证就会跳转到配置文件里面配置的登录页面,配置文件代码如下:改造完以后重新生成,在URL地址栏里面输入:http://localhost:39175/Admin/Index,页面显示效果如下:在访问Welcome方法,输入:http://localhost:39175/Admin/Welcome,页面显示效果如下:从上图中可以看出虽然访问的是Welcome这个Action,但是并没有直接返回相应的视图,而是被带到了登录页面,这是因为Welcome这个Action上面使用了Authorize特性,拒绝了所有未登录用户的访问。上面既然拒绝了未验证用户的访问,那么就登录下通过验证。看上面LogOn里面的免费云主机域名代码就知道,只要输入的用户名和密码相同就可以登录,都输入“admin”,这时页面显示如下:截图表明已经通过验证并且得到了Welcome这个Action的相应。按F12打开控制台,会发现这时多了一个名为“.ASPXAUTH”的Cookie,这个是默认名称,在配置文件里面可以修改。如果登录的时候勾选了记住我,那么此Cookie的过期时间就是在配置文件里面定义的2880分钟。权限过滤器的第二种用法:基于用户授权和基于角色授权。基于角色授权就是给Authorize特性的Roles属性赋值,多个角色可以使用逗号分隔。基于用户授权就是给Authorize特性的Users属性赋值,如果是多个用户也可以使用逗号分隔。验证不通过时也可以通过web.config进行配置。继续基于上面的案例进行改造,只允许登录名为“a”、“b”的两个用户可以访问Welcome方法,改造后的代码如下:再次访问http://localhost:39175/Admin/Welcome,然后用admin登录,这时会发现页面不会跳转到Welcome方法对应的页面,还是显示登录页。如果换成a或者b登录就会显示Welcome对应的页面了,这说明设置的Users属性起作用了。在上面的案例中,给Authorize特性的Users属性赋值就可以控制可以访问的用户了,从操作性上来说这样控制Action的访问权限还是很方便的。但是如果项目很大,用户对应的角色和权限变化比较大,每次变化都要修改代码来重新标注Action显然不合适。这时该如何解决呢?这就可以用MVC提供的自定义过滤器了。关于“ASP.NETMVC授权过滤器如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: HTML中标签有什么用

小编给大家分享一下HTML中标签有什么用免费云主机域名,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 标签定义及使用说明 标签定义独立的内容。 标签定义的内容本身必须是有意义的且必须是独立于文档的其余部分。 的潜在来源: 论坛帖子 博客文章 …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 01/23 16:58
Next 01/23 16:58

相关推荐