首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET MVC中设置整个区域的授权?

如何在ASP.NET MVC中设置整个区域的授权?
EN

Stack Overflow用户
提问于 2010-02-23 23:08:38
回答 4查看 38.2K关注 0票数 62

我有一个管理区,我只想管理员进入该区域。我考虑将授权属性添加到Admin区域中的每个控制器。有没有一个优雅的解决方案,或者框架本身没有这个特性?

编辑:很抱歉,我应该在之前提到这一点。我使用的是从AuthorizeAttribute派生的自定义AuthorizedAttribute。

EN

回答 4

Stack Overflow用户

发布于 2015-09-11 09:16:40

我刚开始做这个...但到目前为止,这对我来说工作得很好。

我创建了一个自定义AuthorizeAttribute类,并将其添加到RegisterGlobalFilters函数中。

在CustomAuthorizeAttribute中,我根据它所在的区域检查各种条件。

代码语言:javascript
复制
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CustomAuthorizeAttribute());
        filters.Add(new HandleErrorAttribute());
    }
}

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var routeData = httpContext.Request.RequestContext.RouteData;
        var controller = routeData.GetRequiredString("controller");
        var action = routeData.GetRequiredString("action");
        var area = routeData.DataTokens["area"];
        var user = httpContext.User;
        if (area != null && area.ToString() == "Customer")
        {
            if (!user.Identity.IsAuthenticated)
                return false;
        }
        else if (area != null && area.ToString() == "Admin")
        {
            if (!user.Identity.IsAuthenticated)
                return false;
            if (!user.IsInRole("Admin"))
                return false;
        }
        return true;
    }
}
票数 17
EN

Stack Overflow用户

发布于 2010-02-23 23:12:07

如果您的所有管理代码都在一个控制器中,则向整个类添加Authorize。

代码语言:javascript
复制
[Authorize]
public class AdminController : Controller
{
     .......
}
票数 12
EN

Stack Overflow用户

发布于 2019-12-16 19:15:59

在startup.cs中使用区域名称和带AuthorizeAreaFolder的斜杠对我来说很有效:

代码语言:javascript
复制
services.AddRazorPages()
        .AddRazorPagesOptions(options => options.Conventions.AuthorizeAreaFolder("Admin", "/"))
        .WithRazorPagesAtContentRoot();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2319157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档