我注意到,当用户登录 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 关联的方法。
希望这对您有所帮助!如果没有,我一定会愿意为您提供进一步的帮助!
关于c# - MVC4 WebSecurity.CurrentUserId 返回 -1 而 User.Identity.Name 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18859531/