gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:44:29 24 4
gpt4 key购买 nike

我需要使用 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+中,您还可以将其放在 Controller 级别或全局注册,然后使用[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 中的角色属性是为了向后兼容 ASP.NET。对于 MVC,唯一真正的安全性是使用 [Authorize] 属性(或为您自己的方案继承它),因为这是保证资源无法通过备用路由访问的唯一方法。

关于asp.net-mvc - 如何使用 mvcSiteMapProvider 实现安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com