在一个数据库中结合 MVC4 和 Symfony2 用户
Posted
技术标签:
【中文标题】在一个数据库中结合 MVC4 和 Symfony2 用户【英文标题】:Combining MVC4 and Symfony2 users in one database 【发布时间】:2012-12-28 16:14:19 【问题描述】:我有一个 web 应用程序,它有一个使用 Symfony2 的前台和一个使用 ASP.NET MVC4 的后台(在你告诉我之前,是的,我知道这是一个荒谬的设置,但这些是我们必须遵守的限制)。
我现在想在我的数据库中有一个用户表,用户可以从该表中登录前台 (SF2) 和后台 (MVC4)。我使用 FOSUserBundle 来管理 Symfony2 端的用户,但我还没有决定应该为应用程序的 MVC4 部分使用哪个成员资格提供程序,主要是因为我不知道如何在 ASP 端对用户进行身份验证。
FOSUserBundle 在注册用户/更改密码时使用具有 5000 次迭代的 SHA512。散列密码和密码盐都存储在数据库中——这一切都很好。问题是我不确定我应该如何在 MVC4 应用程序中使用这些数据;我做了一些研究,看看我是否可以更改散列算法等,但这需要我制作一个自定义会员提供程序,这对于以前从未使用过 MVC4 的人来说有点令人生畏。
谁能指出我正确的方向?将不胜感激。
【问题讨论】:
有趣的问题。我很确定 Symfony2 身份验证内容足够灵活,可以从 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>
现在,当您在 LogOn 操作中调用 Membership.ValidateUser
时,它将委托给您的自定义提供程序。
【讨论】:
谢谢,我一定会试一试的!以上是关于在一个数据库中结合 MVC4 和 Symfony2 用户的主要内容,如果未能解决你的问题,请参考以下文章
详解基于MongoDB的地理位置查询,结合Symfony2演示