MVC5:自定义身份验证

时间:2016-05-20 08:58:19

标签: c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

我需要调用自定义身份验证服务,而不是使用forms authenticationwindows authentication。如果身份验证成功,此服务将返回一个JSON对象,其中包含有关用户的信息。

我如何在ASP.NET MVC 5中集成它?

例如:有没有办法可以简单地覆盖ASP.NET安全管道中的身份验证步骤,仍然使用授权部分。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我最终创建了一个没有身份验证的新MVC应用程序。然后我创建了一个挂钩到ASP.NET请求管道(https://msdn.microsoft.com/en-us/library/bb470252.aspx

的自定义模块
public class MyAuthModule : IHttpModule
{
    public void Dispose()
    {
        // Implement when you need to release unmanaged resources
    }

    public void Init(HttpApplication context)
    {
        context.AuthenticateRequest += Context_AuthenticateRequest;
        context.PostAuthenticateRequest += Context_PostAuthenticateRequest;
    }

    private void Context_AuthenticateRequest(object sender, EventArgs e)
    {
        // Call custom library to authenticate
        // and create a new ClaimsPrincipal with the info from the JSON object.
    }

    private void Context_PostAuthenticateRequest(object sender, EventArgs e)
    {
        // Optional: Inspect the ClaimsPrincipal and add more claims
    }
}

然后在web.config中注册此模块:

<system.webServer>
  <modules>
    <add name="MyAuthModule"
         type="MvcDemo.Auth.MyAuthModule, MvcDemo" />
  </modules>
</system.webServer>