我有一个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时,它将委派给您的自定义提供程序.