【问题标题】:Get cookies from AuthorizeAttribute Filter从 AuthorizeAttribute 过滤器获取 cookie
【发布时间】:2014-06-16 16:31:35
【问题描述】:
使用 ASP.Net Web API 2,是否可以从 AuthorizeAttribute 过滤器中获取 cookie
public class SessionFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// I need to read cookie values here
// filterContext.??getCookies??
}
}
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-web-api
【解决方案1】:
从 AuthorizationContext 获取 cookie:
filterContext.HttpContext.Request.Cookies
方法中的示例:
public class SessionFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// I need to read cookie values here
HttpCookie cookie = filterContext.HttpContext.Request.Cookies.Get("Cookie Name");
}
}
【解决方案2】:
分享我在 AuthorizationContext 中实现 i18n 的函数
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
{
string culureName = "en-US";
HttpCookie cultureCookie = filterContext.RequestContext.HttpContext.Request.Cookies["lang"];
if (cultureCookie != null
&& !string.IsNullOrWhiteSpace(cultureCookie.Value)
&& cultureCookie.Value != "null")
{
if (cultureCookie.Value == "en")
{
culureName = "en-US";
}
else if (cultureCookie.Value == "cn")
{
culureName = "zh-CN";
}
}
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
base.OnAuthorization(filterContext);
}