Объединение пользователей 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
он будет делегирован вашему провайдеру.