c# - Membership provider用还是不用?

标签 c# asp.net sql facebook membership

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

在添加新用户的同时,我还想保存用户的 facebook 相关数据...例如 UID 和访问 token 。

编辑

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

更新

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

最佳答案

如果在滚动您自己的身份验证/登录或使用 Membership 和编码映射层之间做出选择,那么我肯定会选择后者,您始终可以在 Membership 为您提供的基础上构建,如果不是通过 API,那么使用直接数据库表。

如果您自己滚动,您不可避免地会得到错误的身份验证并在以后付出代价。

作为替代方案,您可能需要查看 OpenID authentication ,即看到这个 SO 线程:OpenID authentication in ASP.NET?

编辑:

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

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

关于c# - Membership provider用还是不用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4577289/

相关文章:

c# - dll 中的 WPF 自定义控件

asp.net - Powershell 脚本创建一个 "sub"网站

c# - 在 LINQ 查询中的模型值中使用列表

mysql - 使用 MySQL 将包含相同索引的其他表中的值相乘

c# - 在具有不同大小写的 switch-case block 中比较 C# 中的字符串

c# - 如何使方法返回泛型方法?

c# - 检查委托(delegate)是否是对象的方法,并检索该对象引用和方法名称

asp.net - 如何制作没有文件扩展名的 ASPX 网页?

c# - ASP.NET 中文本框的正则表达式验证器出现问题

MySQL:获取具有不同参数的行