4

我有一个 web 应用程序,它有一个使用 Symfony2 的前台和一个使用 ASP.NET MVC4 的后台(在你告诉我之前,是的,我知道这是一个荒谬的设置,但这些是我们必须遵守的限制)。

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

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

谁能指出我正确的方向?将不胜感激。

4

1 回答 1

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它将委托给您的自定义提供程序。

于 2013-01-14T17:26:53.700 回答