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

asp.net-mvc – 如何使用mvcSiteMapProvider实现安全性?

发布时间:2020-12-16 03:59:20 所属栏目:asp.Net 来源:网络整理
导读:我需要使用我的mvcSiteMapProvider V4软件实现角色安全性.我正在使用它与MVC3. 示例mvcSiteMap代码: mvcSiteMapNode roles="Admin" title="Your Subscription (All Users)" controller="SOU" action="ListSubscribers" 此角色属性值无效: mvcSiteMapNode r
我需要使用我的mvcSiteMapProvider V4软件实现角色安全性.我正在使用它与MVC3.

示例mvcSiteMap代码:

<mvcSiteMapNode roles="Admin" title="Your Subscription (All Users)" controller="SOU" action="ListSubscribers">

此角色属性值无效:

<mvcSiteMapNode roles="NoAdmin" title="Your Subscription (All Users)" controller="SOU" action="ListSubscribers">

这是一样的.如果管理员登录,我希望上述内容不起作用?如果只有用户登录,我希望第一个例子能够工作.

……但没有效果.

非常感谢

解决方法

默认情况下不启用安全修整.您需要做的第一件事就是打开它.

内部DI(web.config):

<add key="MvcSiteMapProvider_SecurityTrimmingEnabled" value="true"/>

外部DI(在MvcSiteMapProvider模块中):

bool securityTrimmingEnabled = true; // First line in the module

然后,您应该将MVC [Authorize]属性放在要保护的每个操作方法上.在MVC4中,您还可以将其置于控制器级别或全局注册,然后使用[AllowAnonymous]属性有选择地允许未经过身份验证的用户允许操作方法.

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }
}

[Authorize(Roles="Admin,Manager")]
public class MyController
{
    // Everyone has access
    [AllowAnonymous]
    public ActionResult Index()
    {
        return View();
    }

    // Only Admin and Manager roles have access,everyone else is denied
    public ActionResult About()
    {
        return View();
    }
}

XML中的roles属性是为了向后兼容ASP.NET.对于MVC,唯一真正的安全性是使用[Authorize]属性(或通过继承它自己的方案),因为它是保证资源无法通过备用路由访问的唯一方法.

(编辑:李大同)

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

    推荐文章
      热点阅读