将匿名用户或错误的用户类型重定向到 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,然后根据您的需要将其应用于控制器或操作
我的站点有两个部分,一个是用作店面的前端客户门户。另一个是商家可以在店面编辑他们的商品、价格和商店页面的外观。
前者可以由任何人、匿名用户或客户帐户访问,但后者只能由已登录的商家帐户访问。如果有人试图使用 link 访问部分内容没有以商家身份登录的商家网站,他们应该被重定向到商家登录。
我有几行可以放在每个 Action 的顶部,如下所示:
if (!(User.Identity.IsAuthenticated
&& User.IsInRole(VendorsController.Role)))
return RedirectToAction("Login", "Vendors");
但是将其添加到每个操作的开头感觉是一种不好的做法。我也看过一些关于修改 web.config 的帖子,但我认为那是针对早期版本的 MVC。 如果用户没有以正确的用户类型登录,有没有办法创建一个事件侦听器来中断重定向到登录的操作调用?或者我必须将这行代码添加到每个操作中吗?
我会在您创建自定义 AuthenticationFilter 的地方使用 AuthenticationFilter,然后根据您的需要将其应用于控制器或操作