asp.net - WebSecurity.UserExists() 返回错误值

标签 asp.net asp.net-mvc-4 simplemembership

我正在使用带有 SimpleMembership 的 ASP.NET MVC 4。当我为特定用户调用 WebSecurity.UserExists() 时,它返回 true。但是,给定的用户存在于配置文件表中,但不存在于成员资格表中。

该函数的在线文档对这两个表的描述相互矛盾。一方面,它说

Returns a value that indicates whether the specified user exists in the membership database.

然后它说

true if the username exists in the user profile table; otherwise, false.

我正在维护自己的用户配置文件表,并让 SimpleMembership 构建和维护自己的成员资格表 (webpages_Membership)。相关用户存在于我的个人资料表中,但不存在于webpages_Membership中。

我希望用户自行注册,但只允许在个人资料表中有记录的人这样做。因此,该用户存在于配置文件表中,但尚未注册。当用户尝试注册时,我希望能够检查他们在配置文件表中是否有记录,但此函数没有执行我期望的操作。而且,更麻烦的是,文档并不清楚它是否检查配置文件表或成员资格表。

最佳答案

查看 WebSecurity 和 SimpleMembershipProvider 代码,我可以确认它从 UserTable 中检查用户,即我们在调用 InitializeDatabase 时指定表名称,如下所示:

WebSecurity.InitializeDatabaseConnection("MyDbContext", "UserProfile", "UserId",
                                "UserName", true);

因此,在这种情况下,当您调用电话时,它会检查 UserProfile 表

WebSecurity.UserExists(userName);

它会传递到您在初始化时关联的 MembershipProvider,在 MVC4 中默认为

SimpleMembershipProvider

所以它转到 SimpleMembershipProvider.GetUser() 并在那里进行如下检查:

SimpleMembershipProvider.GetUserId(database, this.SafeUserTableName, this.SafeUserNameColumn, this.SafeUserIdColumn, username);

这清楚地表明它正在检查用户表而不是成员资格表。

我看到您的困惑,当他们说成员(member)数据库时,他们指的是您保存用户数据的数据存储,而不是成员(member)表。

我不明白问题到底是什么,正如您所说:

When I call WebSecurity.UserExists() for a specific user, it is returning true. However, the given user exists in the profile table but does not exist in the membership table.

这是默认行为。您对此有何期待?

此外,在我看来,我不认为确定用户是否使用成员(member)表注册是个好主意,因为 UserTable 中的每个用户在成员(member)表中都有一个关联的条目(可能不一定,但就我而言)可以看到)。

你不能在 UserTable 本身中有一个列 IsRegistered 来建立这个吗?

关于asp.net - WebSecurity.UserExists() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18060642/

相关文章:

asp.net - Windows Azure 问题 - 第一个请求失败但第二个请求成功?

jquery - MVC4 jquery 脚本

c# - 无法加载文件或程序集“System.Web.Helpers,IIS 8 上的错误

c# - 以 ASP.NET MVC 表格形式动态添加行

javascript - 在 ASP.NET Web 应用程序中包含 Google Analytics javascript 代码

facebook-graph-api - 如何使用 DotNetOpenAuth 登录 Facebook

ASP.NET Identity 外部身份验证提供程序自定义图标

asp.net-mvc - MVC 4 中的角色何时初始化?不是在成功登录后

asp.net-mvc - ASP.NET 简单的成员(member)提供程序?

c# - 具有动态列的 LINQ Pivot