2016-05-20 5 views
1

Вместо использования forms authentication или windows authentication Мне нужно вызвать пользовательскую службу аутентификации. Эта служба вернет объект JSON, который содержит информацию о пользователе, если аутентификация выполнена успешно.MVC5: Пользовательская аутентификация

Как бы интегрировать это в ASP.NET MVC 5?

Например: Есть ли способ, которым я могу просто переопределить шаг аутентификации в конвейере безопасности ASP.NET и все еще использовать части авторизации. Как мне это сделать?

+1

Вы смотрели на ASP.net идентичности? – TryingToImprove

+2

Добавление единого входа в систему относительно просто с MVC5, если вы посмотрите на Startup.cs примерного проекта, вы можете найти демонстрационный код с комментариями, чтобы добавить аутентификацию facebook, twitter и google, возможно, это хорошее место для начала – SamGhatak

ответ

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> 
Смежные вопросы