将匿名用户或错误的用户类型重定向到 ASP.net MVC 3 中特定控制器内的登录页面

Redirecting Anonymous User or wrong user type to login page within a specific controller in ASP.net MVC 3

我的站点有两个部分,一个是用作店面的前端客户门户。另一个是商家可以在店面编辑他们的商品、价格和商店页面的外观。

前者可以由任何人、匿名用户或客户帐户访问,但后者只能由已登录的商家帐户访问。如果有人试图使用 link 访问部分内容没有以商家身份登录的商家网站,他们应该被重定向到商家登录。

我有几行可以放在每个 Action 的顶部,如下所示:

if (!(User.Identity.IsAuthenticated
    && User.IsInRole(VendorsController.Role)))
        return RedirectToAction("Login", "Vendors");

但是将其添加到每个操作的开头感觉是一种不好的做法。我也看过一些关于修改 web.config 的帖子,但我认为那是针对早期版本的 MVC。 如果用户没有以正确的用户类型登录,有没有办法创建一个事件侦听器来中断重定向到登录的操作调用?或者我必须将这行代码添加到每个操作中吗?

我会在您创建自定义 AuthenticationFilter 的地方使用 AuthenticationFilter,然后根据您的需要将其应用于控制器或操作