Объединение пользователей MVC4 и Symfony2 в одну базу данных

У меня есть веб-приложение, которое имеет frontoffice, который использует Symfony2, и backoffice, который использует ASP.NET MVC4 (прежде чем вы скажете мне, да, я знаю, что это нелепая установка, но это ограничения, которых мы должны придерживаться).

Теперь я хотел бы иметь одну пользовательскую таблицу в моей базе данных, из которой пользователи могут войти как во frontoffice (SF2), так и в backoffice (MVC4). Я использую FOSUserBundle для управления моими пользователями на стороне Symfony2, но я не решил, какого поставщика членства мне следует использовать для части приложения MVC4, в основном потому, что я не знаю, как аутентифицировать пользователей на стороне ASP.

FOSUserBundle использует SHA512 с 5000 итерациями при регистрации пользователя / смене пароля. И хешированный пароль, и соль пароля хранятся в базе данных - все это прекрасно работает. Проблема в том, что я не уверен, как мне использовать эти данные в приложении MVC4; Я провел небольшое исследование, чтобы выяснить, могу ли я изменить алгоритм хеширования и т. Д., Но для этого нужно, чтобы я сделал собственного провайдера членства, что немного пугает тех, кто никогда раньше не работал с MVC4.

Кто-нибудь может указать мне правильное направление? Это будет с благодарностью.

1 ответ

Решение

Вы могли бы write a custom membership provider это будет запрашивать вашу базу данных. В основном вы должны написать класс, который является производным от MembershipProvider и реализовать методы, которые вы хотите использовать. Есть много методов, но вам, вероятно, не нужно переопределять их все. Например, ValidateUser Метод принимает имя пользователя и пароль, и вам решать эту ситуацию.

Например:

public class MyCustomMembershipProvider: MembershipProvider
{
    ...
}

а затем вы можете зарегистрировать этот пользовательский поставщик членства в вашем web.config, чтобы заменить по умолчанию:

<membership defaultProvider="MyCustomMembershipProvider">
    <providers>
        <clear/>
        <add name="MyCustomMembershipProvider" 
             type="MvcApplication1.Providers.MyCustomMembershipProvider" />
    </providers>
</membership>

Теперь, когда внутри вашего действия входа в систему вы вызываете Membership.ValidateUser он будет делегирован вашему провайдеру.

Другие вопросы по тегам