加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 限制访问ASP.NET MVC 3中的控制器方法

发布时间:2020-12-16 06:30:16 所属栏目:asp.Net 来源:网络整理
导读:我有一个网站,其中包含一些标签,当选择一个标签时,会使用 AJAX调用从服务器检索其内容.每个选项卡都通过不同的控制器加载.例如,我有一个Customer页面,其中包含Products和Clients选项卡. 该站点具有不同类型的用户,具有不同的权限级别. 我想要做的是保护控制
我有一个网站,其中包含一些标签,当选择一个标签时,会使用 AJAX调用从服务器检索其内容.每个选项卡都通过不同的控制器加载.例如,我有一个Customer页面,其中包含Products和Clients选项卡.

该站点具有不同类型的用户,具有不同的权限级别.

我想要做的是保护控制器,并仅在登录用户具有权限时显示选项卡的内容.因此,如果未经许可的用户输入控制器的URL,则应重定向到登录页面.网址是这样的:

http://localhost/MyApp/Products/1

其中1是产品的数据库ID.

我可以实现这两个解决方案,但没有一个是最佳的:

>使用ChildOnlyAction属性.我会使用此属性标记Product控制器的操作,并使用RenderAction从主视图渲染选项卡.但这意味着必须渲染页面上的所有选项卡,这不是最佳选择,因为我只想在用户单击选项卡时加载数据.
>在每次向产品控制器发出请求时,我都会使用记录的ID进行数据库查询,以检查用户是否有权访问它.但这意味着对于每个请求,我都必须运行额外的查询.

我想知道是否有更好的方法.

解决方法

与罗米亚斯的建议相似.您可以将Authorize元属性与自定义IAuthorizationFilter过滤器结合使用.

实施“授权”元属性时,指定应具有该操作权限的用户或角色列表.这缺乏使用数据库指定用户应该访问哪个ID的能力.

这是ID-to-User映射,IAuthorizationFilter可以在其中发挥作用.在过滤器中,您可以根据数据库检查当前用户.

可以在以下页面找到IAuthorizationFilter示例及其用法:

http://geekswithblogs.net/brians/archive/2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读