C# MVC应用中面临的会话问题
我使用的是Asp.Net成员身份,当用户输入正确的用户名和密码时,我会使用以下方式让他登录:C# MVC应用中面临的会话问题,c#,asp.net,asp.net-mvc,asp.net-mvc-3,session,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Session,我使用的是Asp.Net成员身份,当用户输入正确的用户名和密码时,我会使用以下方式让他登录: FormsAuthentication.SetAuthCookie(String, Boolean) 如果我创建了一个持久cookie,那么我认为我的成员资格仍然可以工作,但是我的会话数据将为空 这真的是在我的应用程序中添加注释并引入了很多错误。我该怎么办 我应该处理global.asax的应用程序_AuthenticateRequest并检查我在会话中存储的用户ID是否为null以及Membersh
FormsAuthentication.SetAuthCookie(String, Boolean)
如果我创建了一个持久cookie,那么我认为我的成员资格仍然可以工作,但是我的会话数据将为空
这真的是在我的应用程序中添加注释并引入了很多错误。我该怎么办
我应该处理global.asax的应用程序_AuthenticateRequest并检查我在会话中存储的用户ID是否为null以及Membership.GetUser()
是否为null,然后我应该在会话中再次存储ProviderUserKey(Guid)
这是一种合理的方法,还是有更好的处理方法?我认为,您需要使用会话而不是cookie。 根据我的说法,在会话或任何地方保存ProviderUserKey都不可取。 使用global.asax(Application_AuthenticateRequest)检查身份验证,并基于该id从DB获取ProviderUserKey
希望我的评论对您有用。我认为,您需要使用会话而不是cookie。 根据我的说法,在会话或任何地方保存ProviderUserKey都不可取。 使用global.asax(Application_AuthenticateRequest)检查身份验证,并基于该id从DB获取ProviderUserKey
希望我的评论对您有用。会话和AuthCookie是不同的。authcookies的生存时间可以在
forms timeout=“5”
config部分中设置,会话生存时间应该在sessionState timeout=“5”
config部分中设置。身份验证cookie可能仍然存在,但会话将过期。检查此项。会话和AuthCookie不同。authcookies的生存时间可以在forms timeout=“5”
config部分中设置,会话生存时间应该在sessionState timeout=“5”
config部分中设置。身份验证cookie可能仍然存在,但会话将过期。选中此项。您必须在web.config
文件中配置会话和authcookie的生命周期。见:
<forms timeout="5" />
<sessionState timeout="5" />
表单用于身份验证,当它超时时将注销
用户。您可以通过设置SlidingExpiration属性来“防止”超时
设置为“true”,它将在用户活动时更新表单票证(阅读
如果需要,请求asp。这将使用户在登录时保持登录
“活动”在您的站点上
及
当会话超时时,您将丢失在会话对象中找到的数据
你的问题可能就是这个问题。您的身份验证cookie处于活动状态,但会话超时。用户已登录,但会话变量已销毁!在应用程序中检查此配置
您必须在
web.config
文件中配置会话和authcookie的生命周期。见:
<forms timeout="5" />
<sessionState timeout="5" />
表单用于身份验证,当它超时时将注销
用户。您可以通过设置SlidingExpiration属性来“防止”超时
设置为“true”,它将在用户活动时更新表单票证(阅读
如果需要,请求asp。这将使用户在登录时保持登录
“活动”在您的站点上
及
当会话超时时,您将丢失在会话对象中找到的数据
你的问题可能就是这个问题。您的身份验证cookie处于活动状态,但会话超时。用户已登录,但会话变量已销毁!在应用程序中检查此配置
你最后的“检查这个”是什么意思?我知道auth cookie是持久的。那么如何在会话中再次设置数据呢?最好的方法是什么?你最后的“检查这个”意味着什么?我知道auth cookie是持久的。那么如何在会话中再次设置数据呢?最好的方法是什么?我不想将表单和会话状态超时设置为相同。如果它们不同呢?然后如何在会话中再次设置数据?最好的方法是什么?如果会话超时,您必须重新填充它的数据。或者,您可以将灯光数据放在cookie中,而不是会话中。例如,我通常将名字、姓氏、电子邮件等保存在cookies中。此外,您还可以在cookie中放置重数据,但不建议这样做。此外,不建议在会话中放置重对象。所以1-如果你有少量数据,把它们放在cookie中(而不是会话)2-如果你有大而重的对象,最好在需要时从数据库中选择它们。我不想将表单和会话状态超时设置为相同。如果它们不同呢?然后如何在会话中再次设置数据?最好的方法是什么?如果会话超时,您必须重新填充它的数据。或者,您可以将灯光数据放在cookie中,而不是会话中。例如,我通常将名字、姓氏、电子邮件等保存在cookies中。此外,您还可以在cookie中放置重数据,但不建议这样做。此外,不建议在会话中放置重对象。所以1-若你们有轻数据,把它们放在cookie中(而不是会话中)2-若你们有大而重的对象,最好在你们需要的时候从数据库中选择它们。