gpt4 book ai didi

asp.net - session ASP.NET 超时

转载 作者:行者123 更新时间:2023-12-01 09:27:10 25 4
gpt4 key购买 nike

我在 asp.net 中遇到 session 问题。我在网上搜索了一段时间,但找不到它不起作用的原因。几分钟后 session 消失。这不是我自己创建的项目,我不是 aspx 中的英雄。但我正在努力解决这个问题。

Web.config

 <system.web>
<authentication mode="Forms">
<forms loginUrl="~/Default.aspx" timeout="120" slidingExpiration="true" />
</authentication>

<customErrors mode="RemoteOnly"/>
<httpRuntime requestValidationMode="2.0"/>
<pages validateRequest="false" />

<sessionState mode="InProc" cookieless="false" timeout="120" />

</system.web>

在必须登录的页面上检查是否登录 如果(!functions.isLoggedIn( session )) { Response.Redirect("Default.aspx"); }函数

public static bool isLoggedIn(HttpSessionState session)
{
return session["user"] != null;
}

还没有登录?显示登录表单,填写表单然后发送到服务器检查

protected void Page_Load(object sender, EventArgs e)
{
if (Request["do"] != null)
{
switch (Request["do"])
{
case "logout":
Session.Abandon();
break;
}
}
if (Request.ServerVariables["REQUEST_METHOD"].ToLower() == "post")
{
//get username en password
string username = Request["username"];
string password = Request["password"];
if (String.IsNullOrWhiteSpace(username) || String.IsNullOrWhiteSpace(password))
{
LoginMessage.Text = "Please fill in all the fields...";
}
else
{
password = FormsAuthentication.HashPasswordForStoringInConfigFile(
password,
"SHA1");
UserService gs = new UserService();
user g = gs.getUserByLogin(username, password);
if (g == null)
{
//wrong login
LoginMessage.Text = "Invalid username/password.";
}
else
{
//good login
Session["user"] = g;
System.Diagnostics.Debug.WriteLine("timeout:" + Session.Timeout);
Response.Redirect("Home.aspx");
}
}
}
}

用户服务中的GetUserByLogin函数

public user getUserByLogin(string username, string password)
{
user g;
var db = new projectName.Db.Models.projectnetContext();

IQueryable<user> query = from gb in db.users
where gb.username.Equals(username)
&& gb.Passwoord.Equals(password.ToLower())
&& gb.Status == 1
select gb;

if (!query.Any())
g = null;
else
g = query.First();

return g;
}

登录后,创建 session

Session["user"] = g;

我的问题是我设置了超时。但这似乎不起作用。如果我检查服务器上的超时,它设置为 120。但是 2 分钟后,我被重定向到登录表单。我能解决这个问题吗?如果我在 localhost 上调试,它似乎可以工作,但不在线。

登录有效。 session 已设置(否则我无法进入下一页)。如果我转到另一个页面(快于 +-5 分钟),那么我仍然处于登录状态。所以问题是重复的。

或者,如果不可能,Cookies?通常我在 PHP 中使用 cookie,..但是有没有一种方法可以在 ASP.NET 中以安全的方式做到这一点?

最佳答案

嗯,我建议您在 asp .net 中使用配置文件而不是 session 。

关于asp.net - session ASP.NET 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com