全球IAuthorizationFilter OnAuthorization进入无限循环

时间:2016-07-12 09:38:18

标签: c# asp.net-mvc

我希望用户在使用我的网站之前完成他们的个人资料。所以准备了IAuthorizationFilter的全局过滤器 所以他们不会通过任何网址传递这个。

public void OnAuthorization(AuthorizationContext filterContext)
{
    // make filter context global
    _filterContext = filterContext;

    if (!IsUserAuthenticated())
        return;

    if (IsRequestedPageAllowed())
        return;

    var forcedUrl = GetForcedUrl();

    if (!forcedUrl.IsEmpty())
    {
        _filterContext.Result = new RedirectResult(forcedUrl);
     }
}

private string GetForcedUrl()
{
    return (string) _filterContext.HttpContext.Session?["ForcedUrl"];
}

我有这个允许的页面。

_allowedPages = new Dictionary<string, object>(StringComparer.InvariantCultureIgnoreCase)
        {
            // Controller: Account
            // List of Actions: LogOff
            {"Account", new List<string>() {"LogOff"}}
        };

强制网址会话将在第一次注册时设置为我的控制器。仅供参考,除了完成确认电子邮件等个人资料外,还有其他强制网址。

问题:     如果网址不在允许的页面上,则过滤器进入无限循环。我的意思是“new RedirectResult(forcedUrl)”     正在一遍又一遍地抓住自己。但我不知道Url在允许的页面列表中是什么。

请帮帮我..

0 个答案:

没有答案