首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IAuthorizationFilter删除cookie

IAuthorizationFilter删除cookie
EN

Stack Overflow用户
提问于 2018-11-05 07:37:20
回答 1查看 102关注 0票数 0

我有一个MVC项目I,用户可以从菜单中更改语言。控制器代码:

代码语言:javascript
复制
[HttpGet]
public ActionResult ChangeLanguage(string Language)
{
    Response.Cookies[SessionParams.LANGUAGE].Value = Language;
    Response.Cookies[SessionParams.LANGUAGE].Expires = DateTime.Now.AddDays(7);

    return Redirect(Request.UrlReferrer.PathAndQuery);
}

和Global.asax.cs代码:

代码语言:javascript
复制
protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (Request.Cookies[SessionParams.LANGUAGE] != null)
    {
         Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.Cookies[SessionParams.LANGUAGE].Value);
    }
}

这个很好用。现在,我添加了一个实现IAuthorizationFilter的类,以确保可以在每个请求(FilterConfig.cs)之前检查会话是否仍然有效:

代码语言:javascript
复制
public class ConnectedUserValidAuthorizationFilter : IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        UrlHelper urlHelper = new UrlHelper(filterContext.HttpContext.Request.RequestContext);
        string loginUrl = urlHelper.Action("Login", "Account");
        if (filterContext.HttpContext.Request.Url.AbsolutePath != loginUrl)
        {
            if (filterContext.HttpContext.Session[SessionParams.CONNECTED_USER] == null)
                filterContext.HttpContext.Response.Redirect("~");
        }
    }
}

由于某种原因,在我将过滤器添加到全局过滤器之后:

代码语言:javascript
复制
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new ConnectedUserValidAuthorizationFilter());
}

调试表明,Request.Cookies在Global.asax.cs中不再保留language cookie的值。

删除筛选器会使值返回。

知道怎么解决吗?我尝试将筛选器代码移动到Application_BeginRequest,但是会话在这个上下文中还不存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-07 10:31:47

最后,我实现了IActionFilter而不是IAuthorizationFilter接口,在OnActionExecuting函数中使用了与OnAuthorization相同的逻辑。

这似乎更适合于任务,因为OnActionExecuting是在每个Action之前调用的。它似乎也能保持饼干完好无损。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53150128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档