Используйте смешанную аутентификацию с Asp.Net MVC (Forms, FB connect, twitter, openId) - PullRequest
8 голосов
/ 11 сентября 2010

Я создаю новый сайт и хочу, чтобы пользователи могли использовать несколько способов входа в систему, в основном пользователи должны иметь возможность создавать нового пользователя на моем сайте ИЛИ использовать Facebook connect ИЛИ использовать учетную запись Twitter для входана сайт.

Я видел несколько учебных пособий по использованию одного из этих методов, и я хочу знать, что, по вашему мнению, является лучшим подходом для этого?

Пока что я думаю, что наилучшим способом было бы создать собственную модель аутентификации (что-то вроде подтипа существующих классов авторизации).

Это лучший подход?Можете ли вы указать мне хороший пример того, как кто-то пробовал что-то подобное?

Большое спасибо

Ответы [ 2 ]

8 голосов
/ 11 сентября 2010

Я недавно писал в блоге о чем-то похожем ... Вот подход, который я выбрал

public class User {
    public int UserID { get; set; }
    public string Name { get; set; }
    public string Page { get; set; }

    public virtual Authentication Authentication { get; set; }
}

public class Authentication {
    public int Id { get; set; }
    public string LoginId { get; set; }
    public string Provider { get; set; }
    public string Password { get; set; }

    public virtual User User { get; set; }
}

//login methods
User StandardUserLogin(string username) {
    IDataContext db = new DataContext();
    var user = db.Users.SingleOrDefault(u => u.Authentication.LoginId == username);
    if (user != null) {
        if (user.Authentication.Password == password) {
            SetAuthenticationTicket(user);
            return user;
        }
    }
}

Я бы создал разные методы входа для каждого типа входа в зависимости от того, как работают их схемы авторизации.1005 *

Кстати, два класса в верхней части представляют мои POCO Entity Framework. Ключом здесь является таблица аутентификации, которая отделена от пользовательской таблицы.Это позволяет одному пользователю иметь несколько способов входа в систему. Надеюсь, это поможет вам в правильном направлении.

1 голос
/ 26 сентября 2011

Если вы готовы тратить несколько долларов в месяц, Служба контроля доступа Windows Azure предоставляет эту функцию в качестве провайдера для ASP.NET. Это также основа для нового потока учетных данных единого входа Windows 8.

Обратите внимание, что Twitter пока не поддерживается, поскольку Access Control не поддерживает OAuth 1.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...