我注意到,当用户在一段时间后登录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/

10-09 15:02