c# - 如何在 ASP.Net c# 中的会话超时后重定向页面?
问题描述
我试过这个东西,但重定向不起作用......
`<sessionState timeout="60"></sessionState>
<authentication mode="Forms">
<forms defaultUrl="login.aspx"
loginUrl="login.aspx"
slidingExpiration="true"
timeout="60" />
</authentication>`
我的asp代码
```
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
if (Session["LoginUserName"] != null)
{
//Redirect to Welcome Page if Session is not null
Response.Redirect("Welcome.aspx");
}
else
{
//Redirect to Login Page if Session is null & Expires
Response.Redirect("Login.aspx");
}
welcome.aspx 和 login.aspx 是网络表单
解决方案
Session_Start 不是放置重定向的正确位置。在 Welcome.aspx 中,输入以下逻辑:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!Request.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
在 Login.aspx 中:
protected void btnLogin_Click(object sender, EventArgs e)
{
if (ValidateUser())
FormsAuthentication.RedirectFromLoginPage(Username.Text, true);
}
private bool ValidateUser()
{
// put here your user validation logic
}
请注意:这是一种非常简单的身份验证方式,如果您需要实现自己的验证逻辑,则很有用;您可能需要使用 SqlMembershipProvider 或更好的 ASP.Net Identity来检查会员资格( https://docs.microsoft.com/it-it/previous-versions/aspnet/yh26yfzy(v=vs.100) ) :https ://docs.microsoft.com/en-us/aspnet/identity/ 。
推荐阅读
- kubernetes - Prometheus 监控 Kubernetes 容器内存使用情况并报告容器使用率是否超过 90%
- collections - 构建字符计数 HashMap 的惯用 Rust 方法是什么?
- javascript - 隐藏所有具有 class= 'contact' 的元素并仅保留 5 个 JavaScript 项
- python - How do I generate barplots showing gene expression data?
- java - How to extract default namespace value from XML in Java or Xpath?
- amazon-web-services - AWS SQS FIFO Queue: How to set MessageGroupId on Send Message component of Mule 4
- python - 如何在时间序列数据框中获取下一个可用日期
- android - How to verify website users using smartphone fingerprint authentication or face recognition?
- open-policy-agent - 将 opa http.send 与 conftest 一起使用
- django - Django Add Record invalid literal for int() with base 10