代码之家  ›  专栏  ›  技术社区  ›  Marko

在登录后保护整个网站,即“授权”所有控制器内的所有操作

  •  3
  • Marko  · 技术社区  · 15 年前

    标题几乎说明了一切。

    目前,我有 [Authorize] 所有的控制器都很乏味 :)

    那么我能用一行神奇的代码来保护整个网站吗?

    另外,请注意,我仍然需要进一步保护某些操作,以便仅由某些用户/角色使用

    3 回复  |  直到 15 年前
        1
  •  9
  •   davehauser    15 年前

    如果您有多个控制器,则创建一个AuthorizeController,从中继承必须受保护的控制器。只要把 [Authorize] 授权控制器的属性:

    [Authorize]
    public class AuthorizeController: Controller
    {
    }
    
    public class HomeController : AuthorizeController
    {
        ...
    }
    
    // don't inherit AccountController from AuthorizeController
    public class AccountController : Controller
    {
        public ActionResult Login()
        {
            ...
        }
    }
    
        2
  •  3
  •   Darren    11 年前

    如果要保护整个网站,可以使用全局筛选器:

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

    有关详细信息,请参见此处 http://visualstudiomagazine.com/blogs/tool-tracker/2013/06/authenticating-users-in-aspnet-mvc-4.aspx

        3
  •  1
  •   Marko    15 年前

    没有关系! 我想我找到了!

    放置 [Authorize] 上面的控制器类似乎可以保护所有操作,并且可以根据每个操作进一步自定义。 对!

    [Authorize]
    public class SomeController : Controller 
    {
        // All logged in users
        public ActionResult Index() 
        {
            ...
        }
    
        [Authorize(Roles="Admin")] // Only Admins
        public ActionResult Details() 
        {
            ...
        }
    }