自定义验证问题

时间:2016-05-02 10:50:01

标签: c# html asp.net-mvc authentication redirect

我在ASP.NET MVC中实现了自定义身份验证,如果用户没有登录,我将无法重定向到登录/注册页面。

我使用IsAuthenticated的全局变量,如果这是假的,我想将所有请求重定向到Account/LoginIndex控制器。我不想违反DRY并在所有控制器中添加过滤器或基本检查,因此是否有一个可以重定向到操作的入口点,布尔值是否为false?我该怎么做?我看了一下ActionFilters,但我不知道我将它作为属性添加到哪里。我还查看了过滤器并修改了global.asax文件。这些都不起作用。控制器依赖于用户登录(否则它的错误中心),那么我该如何做呢?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用全局过滤器并注册AuthorizeAttribute,如下所示

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

然后在处理登录的控制器中,您应该覆盖授权过滤器,以便它不需要授权

[OverrideAuthorization]
public class AccountController : Controller

如果您需要任何自定义行为进行授权,然后通过全局过滤器注册自定义类,您还可以实现从AuthorizeAttribute继承的自定义类。