c# – 将MVC4和Symfony2用户组合在一个数据库中

我有一个webapp,它有一个使用Symfony2的前台,以及一个使用ASP.NET MVC4的后台(在你告诉我之前,是的,我知道这是一个荒谬的设置,但这些是我们必须遵守的约束).

我现在想在我的数据库中有一个用户表,用户可以在前台(SF2)和后台(MVC4)中登录.我使用FOSUserBundle来管理我在Symfony2端的用户,但我还没有决定应该为应用程序的MVC4部分使用哪个成员资格提供程序,主要是因为我不知道如何在ASP端验证用户.

注册用户/更改密码时,FOSUserBundle使用SHA512进行5000次迭代.散列密码和密码盐都存储在数据库中 – 这一切都正常.问题是我不确定如何在MVC4应用程序中使用这些数据;我做了一些研究,看看我是否可以更改散列算法等,但这需要我制作一个自定义成员资格提供程序,这对于之前从未使用过MVC4的人来说有点令人生畏.

有人能指出我正确的方向吗?非常感谢.

最佳答案 你可以
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>

现在,当您在LogOn操作中调用Membership.ValidateUser时,它将委派给您的自定义提供程序.

点赞