我注意到,当用户在一段时间后登录WebSecurity.CurrentUserID
时,将返回-1,这将使用户返回“登录”屏幕。在我的登录屏幕上,我有一个部分说
if(User.Identy.IsAuthenticated){
@Html.ActionLink("Dashboard", "Index", "Dashboard");
}
在调试问题时,Web安全功能返回-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/