我有以下内容:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
Run Code Online (Sandbox Code Playgroud)
如何通过.click功能在倒计时中途重置计数器?
我正在创建一个多租户网站,为客户端托管页面.URL的第一部分将是一个字符串,用于标识客户端,使用以下URL路由方案在Global.asax中定义:
"{client}/{controller}/{action}/{id}"
Run Code Online (Sandbox Code Playgroud)
这样工作正常,使用/ foo/Home/Index等URL.
但是,当使用[Authorize]属性时,我想重定向到也使用相同映射方案的登录页面.因此,如果客户端是foo,则登录页面将是/ foo/Account/Login,而不是web.config中定义的固定/帐户/登录重定向.
MVC使用HttpUnauthorizedResult返回401未授权状态,我认为这会导致ASP.NET重定向到web.config中定义的页面.
那么有谁知道如何覆盖ASP.NET登录重定向行为?或者通过创建自定义授权属性来重定向MVC会更好吗?
编辑 - 答:在深入研究.Net源代码后,我认为自定义身份验证属性是最佳解决方案:
public class ClientAuthorizeAttribute: AuthorizeAttribute
{
public override void OnAuthorization( AuthorizationContext filterContext )
{
base.OnAuthorization( filterContext );
if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult )
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values[ "client" ] },
{ "controller", "Account" },
{ "action", "Login" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
Run Code Online (Sandbox Code Playgroud) .net authentication asp.net-mvc forms-authentication asp.net-routing
我正在使用ASP.NET MVC.我想在会话到期时重定向到登录页面.我怎样才能做到这一点?如果我正在对控制器中的方法进行AJAX调用,那么如果我的会话在那种情况下到期,我也想重定向到登录页面.