c# - MVC4 WebSecurity.CurrentUserId 返回 -1 而 User.Identity.Name 仍然有效

标签 c# asp.net-mvc asp.net-mvc-4

我注意到,当用户登录 WebSecurity.CurrentUserID 一段时间后将返回 -1,这将使用户返回到登录屏幕。在我的登录屏幕中,我有一个部分显示

if(User.Identy.IsAuthenticated){

   @Html.ActionLink("Dashboard", "Index", "Dashboard");
}

在调试问题时,网络安全功能返回 -1,但 User.Identity 显示为已通过身份验证。为什么会有差异,我们如何才能使它们相同?

谢谢 克雷格

最佳答案

WebSecurity.CurrentUserId 属性是只读的。它不能通过代码更改。该属性用于标识 WebSecurity 数据库中的用户,包括用户配置文件表和成员资格表。如果您的 Web 应用程序中没有配置这些表中的任何一个,您将返回 -1。

假设您已经配置了 SimpleMembershipProvider在您的数据库中应该有以名称 aspnet_webpages_ 开头的表(假设您没有重命名它们)。这是 WebSecurity 检查值的地方。还要确保您使用的是与 SimpleMembershipProvider 关联的方法。

Check out this article

希望这对您有所帮助!如果没有,我一定会愿意为您提供进一步的帮助!

关于c# - MVC4 WebSecurity.CurrentUserId 返回 -1 而 User.Identity.Name 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18859531/

相关文章:

c# - 如何在 asp.net mvc 中添加其他字段以注册页面?

javascript - 在 asp.net MVC5 中将模型属性从 View 传递到 javascript

jquery - MVC4 jquery 脚本

c# - 我需要将交叉引用表与 Entity Framework 一起使用

azure - 将异步与 MVC4 和 Azure 结合使用

c# - 如何使用结果映射将 dapper 结果转换为字典

c# - 将文本框中的数字转换为浮点 C#

c# - ASP.NET MVC 超链接一个项目到另一个项目

C# SortedSet 元素相等

C# - 在某个位置后截断