我有一个webapp,它有一个使用Symfony2的前台,以及一个使用ASP.NET MVC4的后台(在你告诉我之前,是的,我知道这是一个荒谬的设置,但这些是我们必须遵守的约束)。
我现在希望在我的数据库中有一个用户表,用户可以在前台(SF2)和后台(MVC4)中登录。我使用FOSUserBundle来管理我在Symfony2端的用户,但我还没有决定应该为应用程序的MVC4部分使用哪个成员资格提供程序,主要是因为我不知道如何在ASP端验证用户。
FOSUserBundle在注册用户/更改密码时使用SHA512进行5000次迭代。散列密码和密码盐都存储在数据库中 - 这一切都正常。问题是我不确定如何在MVC4应用程序中使用这些数据;我做了一些研究,看看我是否可以更改散列算法等,但这需要我制作一个自定义成员资格提供者,这对于之前从未使用过MVC4的人来说有点令人生畏。
有人能指出我正确的方向吗?非常感谢。
答案 0 :(得分:2)
您可以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
时,它将委托给您的自定义提供程序。