相关疑难解决方法(0)

重置setTimeout

我有以下内容:

window.setTimeout(function() {
    window.location.href = 'file.php';
}, 115000);
Run Code Online (Sandbox Code Playgroud)

如何通过.click功能在倒计时中途重置计数器?

javascript jquery

139
推荐指数
5
解决办法
15万
查看次数

如何重定向到ASP.NET MVC中的动态登录URL

我正在创建一个多租户网站,为客户端托管页面.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

95
推荐指数
2
解决办法
4万
查看次数

使用ASP.NET MVC会话到期时重定向到登录页面

我正在使用ASP.NET MVC.我想在会话到期时重定向到登录页面.我怎样才能做到这一点?如果我正在对控制器中的方法进行AJAX调用,那么如果我的会话在那种情况下到期,我也想重定向到登录页面.

ajax asp.net-mvc

14
推荐指数
2
解决办法
5万
查看次数