会员提供商使用或不使用?

时间:2011-01-02 05:33:42

标签: c# asp.net sql facebook membership

我正在开发一个使用Facebook的网站。现在,为了管理用户,我想使用MembershipProvider并选择开发自定义成员资格提供程序。我的问题是我的数据库模式与标准成员资格模式不匹配,并且提供覆盖的函数采用不同于我期望的参数。例如,成员资格使用username作为用户名登录。但我必须使用用户电子邮件ID作为用户名。此外,它的搜索功能基于使用用户名作为搜索方式,但我希望它通过UserID进行搜索。用户插入,删除,修改的相同用途。

在添加新用户时,我还想保存用户的Facebook相关数据...比如UID和访问令牌。

修改

这只是一个想法,在参数中强制传递我的值然后在我的代码中处理它们是否可行?

更新

我发现Create user方法中有一个object providerUserKey参数。在MSDN文档中,我发现它用于为每个新行传递一个唯一的键,如GUID。但在我的数据库中,我已经有了新行的UID规定。因此,我应该使用此额外参数通过此参数将我的自定义数据作为对象传递,并在我的自定义提供程序代码中处理它。

1 个答案:

答案 0 :(得分:4)

如果选择在滚动您自己的身份验证/登录或使用成员身份并编写映射层之间,那么我肯定会使用后者,您可以始终建立在成员资格为您提供的内容上,如果不是通过API然后使用数据库表直接。

不可避免地会出现身份验证错误,如果你自己动手,就要付出代价。

作为替代方案,您可能需要查看OpenID authentication,即请参阅此SO主题:OpenID authentication in ASP.NET?

修改

我认为您不需要自定义成员资格提供程序。在我过去完成的项目中,在与ASP.NET Membership集成之前,我们拥有自己的用户管理。除了将SQL成员资格表添加到我们的数据库之外,我们所要做的就是在我们的用户(当时有一个常规bigint作为密钥)和成员资格用户GUID之间提供映射。通过这种映射,您还可以保存所有与Facebook相关的数据(仅与会员用户的FK关系)

除此之外我认为会员资格已经允许使用电子邮件地址登录,所以我认为你不会在那里遇到太多麻烦。