根据 IP 地址设置 ASP.net 会话超时

发布于 2024-10-01 00:25:03 字数 260 浏览 3 评论 0原文

是否可以根据用户的 IP 地址以编程方式设置用户会话的会话超时?

示例:如果 IP 地址在 192.0.X 范围内,则将会话超时设置为 6 小时。否则,保留 web.config 中的默认设置(或设置为 30 分钟)。

据推测,这将在 Global.asax:Session_Start 中完成。现在,我可以只使用用户在会话中第一个请求的 IP 地址(考虑到用户可以在会话中更改 IP 地址)。

ASP.net 3.5、IIS 7

Is it possible to programmatically set the session timeout for a user-session based on the user's IP address?

Example: if IP address is in the range of 192.0.X then set session timeout to 6 hours. Otherwise, leave at default set in web.config (or set to 30 minutes).

Presumably this would be done in Global.asax:Session_Start. For now I would be ok with just using the IP address of the user's first request in a session (allowing for the fact that a user could change IP addresses mid-session).

ASP.net 3.5, IIS 7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

总以为 2024-10-08 00:25:03

要测试 IP 范围,您可以使用:Request.UserHostAddress.StartsWith("192.0.")
然后使用 Session.Timeout 属性设置超时。

C# 示例:

if(Request.UserHostAddress.StartsWith("192.0."))
{
  Session.Timeout = 360; // 6 hours
}

按照您的建议在 Global: Session_Start 事件中执行此操作。

To test for the IP range, you can use: Request.UserHostAddress.StartsWith("192.0.").
Then set timeout using Session.Timeout property.

C# example:

if(Request.UserHostAddress.StartsWith("192.0."))
{
  Session.Timeout = 360; // 6 hours
}

Do this in Global: Session_Start event as you suggested.

樱桃奶球 2024-10-08 00:25:03

Yuo 可以将会话的 Session.Timeout 属性设置为代码中默认值以外的值。

Yuo can set the Session.Timeout property for the session to something other than the default in code.

愚人国度 2024-10-08 00:25:03

您可以在 web.config 中更改会话超时
在system.web会话状态超时=540/>中编写此代码//6小时

you can change session timeout in web.config
write this code in system.web session state timeout=540/> //6 hours

流殇 2024-10-08 00:25:03

我认为 Session.Timeout 属性设置整个应用程序而不是用户会话的超时。我认为一个应用程序中不能有多个超时。

选项是有两个站点/应用程序,一个用于长时间超时的用户,另一个用于其他用户。

您还可以通过创建会话提供程序来使用自己的会话管理,或使用完整的自定义方式来处理会话状态。

另一种选择是向长时间超时用户的页面添加 JavaScript 以保持会话处于活动状态。查看这篇文章

I think the Session.Timeout property sets the timeout for the whole application rather than the user session. I don't think you can have multiple timeouts within one application.

Options are to have two sites/applications one for the long-timeout users and another one for the others.

You could also use your own session management by creating a session provider or use a complete custom way to handle session state.

Another option is to add JavaScript to the pages of the long-timeout users to keep the session alive. Check this article

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文