我在ASP.NET MVC中实现了自定义身份验证,如果用户没有登录,我将无法重定向到登录/注册页面。
我使用IsAuthenticated
的全局变量,如果这是假的,我想将所有请求重定向到Account/LoginIndex
控制器。我不想违反DRY并在所有控制器中添加过滤器或基本检查,因此是否有一个可以重定向到操作的入口点,布尔值是否为false?我该怎么做?我看了一下ActionFilters,但我不知道我将它作为属性添加到哪里。我还查看了过滤器并修改了global.asax文件。这些都不起作用。控制器依赖于用户登录(否则它的错误中心),那么我该如何做呢?感谢。
答案 0 :(得分:1)
您可以使用全局过滤器并注册AuthorizeAttribute,如下所示
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
}
然后在处理登录的控制器中,您应该覆盖授权过滤器,以便它不需要授权
[OverrideAuthorization]
public class AccountController : Controller
如果您需要任何自定义行为进行授权,然后通过全局过滤器注册自定义类,您还可以实现从AuthorizeAttribute继承的自定义类。