在我的asp.net网站上,我使用asp.net表单身份验证,配置如下
<authentication mode="Forms">
<forms loginUrl="~/Pages/Common/Login.aspx"
defaultUrl="~/Pages/index.aspx"
protection="All"
timeout="30"
name="MyAuthCookie"
path="/"
requireSSL="false"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" >
</forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)
我有以下问题
什么应该是会话的超时值,因为我在表单身份验证中使用滑动到期,因为哪个会话将在表单身份验证之前到期.我该如何保护它?
在formauthentication注销后,我想在logout.aspx重定向页面,但它会自动重定向到loginpage.aspx.这怎么可能?
我尝试使用代码来增加会话超时,但没有用,
代码是:
<sessionState mode="InProc" cookieless="true" timeout="60">
</sessionState>
Run Code Online (Sandbox Code Playgroud)
也代码在
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
Session.Timeout = 15;
}
Run Code Online (Sandbox Code Playgroud) 无论我们是否检查会话变量,是否会在每个请求上重置会话超时?或者我们应该使用至少一个会话变量?
Ajax请求会导致重置会话超时吗?像Update Panel,jQuery ajax...
谢谢
编辑1)
会HTTP Get导致重置会话超时吗?
我们正在整个应用程序中使用Ajax调用 - 尝试在尝试执行任何Ajax请求时,如果会话已经过期,则尝试找到重定向到登录页面的全局解决方案.我编写了以下解决方案,从这篇文章中获取帮助 - 在ajax调用中处理会话超时
不确定为什么在我关心的事件中"HandleUnauthorizedRequest"没有被解雇.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class CheckSessionExpireAttribute :AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
var url = new UrlHelper(filterContext.RequestContext);
var loginUrl = url.Content("/Default.aspx");
filterContext.HttpContext.Session.RemoveAll();
filterContext.HttpContext.Response.StatusCode = 403;
filterContext.HttpContext.Response.Redirect(loginUrl, false);
filterContext.Result = new EmptyResult();
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器操作中使用Above自定义属性如下:
[NoCache]
[CheckSessionExpire]
public ActionResult GetSomething()
{
}
Run Code Online (Sandbox Code Playgroud)
AJAX Call(JS部分):
function GetSomething()
{
$.ajax({
cache: false,
type: "GET",
async: true,
url: "/Customer/GetSomething",
success: function (data) {
},
error: function (xhr, …Run Code Online (Sandbox Code Playgroud) 我正在考虑使用,<sessionState mode="InProc" timeout="45" />因为有些用户反复登录,我想节省一些时间.但是,在我将其添加到我的web.config文件之前,我想确保没有副作用.
我读了很多sessionState版本,虽然我已经很清楚发生了什么,但我很想知道asp.net mvc 3应用程序的默认设置是什么,因为此时sessionState我的内部没有定义system.web.
我知道应用程序可以在Session["key"]没有声明的情况下访问,尽管我试图避免在Session上加载这种类型的负载.我假设我的应用程序继承了IIS 7中的一个设置(此应用程序位于共享托管环境中).
我知道如果我使用专用数据库或服务器进行会话可能会出现问题,但这只是一个基本设置,只要这样,没什么特别的.
sessionStateasp.net mvc 3 有默认值吗?它只是被遗传了吗?web.config如果它在IIS中的其他位置定义,是否会因为覆盖它而产生副作用?
asp.net ×3
session ×2
ajax ×1
ajax-request ×1
asp.net-3.5 ×1
asp.net-ajax ×1
asp.net-mvc ×1
forms ×1
jquery ×1
timeout ×1
web-config ×1