2013-12-15 5 views
0

Я только что начал знать MVC 5, и я пытаюсь использовать его встроенную аутентификацию owin.ASP.NET MVC 5 OWIN Ауентификация

Мне нужно реализовать аутентификацию форм с помощью IIS, но аутентификация OWIN сложна, чем я ждал.

У меня есть модель структуры Entity Framework с собственными таблицами User, Role и RoleUser и вы хотите аутентифицировать пользователя этими таблицами.

Я попытался понять, как работает owin на образце приложения mvc 5. Он имеет класс ApplicationUser:

public class ApplicationUser : IdentityUser 
{ 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 
} 

Моя основная проблема - IdentityUser. Это собственный пользовательский класс ASP.NET с реализацией интерфейса IUser и подключением DbContext. У меня есть собственный объект User POCO из EF-модели, и я не хочу смешивать его с интерфейсом IUser ASP.NET. Я знаю, почему, но интерфейс IUser является строковым типом, который также не применим ко мне.

Owin асинхронной знак пользователя в следующий:

private async Task SignInUserAsync(User user, bool isPersistent) 
{ 
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); 
    ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 
    AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); 
} 

Он рекомендует создать тип ClaimsIdentity идентичности для входа пользователя и свойства пользователя необходимо реализующего интерфейс IUser.

Большой вопрос: предлагается ли owen в моей среде? Я хочу использовать свой User Class с аутентификацией owin, но я не знаю, как это сделать?

Спасибо за помощь!

ответ

0

Лучший способ, которым я могу понять, - это получить свой класс POCO от IdentityUser. При этом вы можете добавить свои свойства POCO как часть своего нового класса. После этого, вы можете создать экземпляр нового UserManager, такие как:

UserManager um = new UserManager<YourPocoDerivedFromIdentityUser>(new UserStore<YourPocoDerivedFromIdentityUSer>(new ApplicationDbContext()) 

с помощью Owin позволит вам легко интегрировать аутентификацию третьих сторон, таких как FB, Google. Команда OWIN отлично поработала с MVC.

Если, однако, ваша текущая система аутентификации работает хорошо, я не понимаю, почему вы хотите обновить?

P.S. - http://www.apress.com/files/extra/ASP_NET_Identity_Chapters.pdf

Здесь вы можете найти 3 главы о новой системе удостоверений. Они очень хорошо читают, и я настоятельно рекомендую их для начала.

2

Вы можете удалить всю модель идентификации ASP.NET и использовать свои собственные компоненты для проверки пароля и хранения роли/заявки.

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux

Членство/Идентичность и формы Auth две разные особенности Ид и управления доступом. Документация Microsoft не делает хорошую работу, объясняя разницу между ними. Это короткое и сладкое сообщение, которое объясняет это. Статья была написана перед OWIN, но тот же принцип применяется.

http://brockallen.com/2012/06/04/membership-is-not-the-same-as-forms-authentication/

Смежные вопросы