Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
359c4f09
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
359c4f09
编写于
4月 30, 2019
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add rejectInvalidCookies flag to CookieLocaleResolver
Closes gh-22861
上级
1f473261
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
16 deletion
+41
-16
spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java
...pringframework/web/servlet/i18n/CookieLocaleResolver.java
+41
-16
未找到文件。
spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java
浏览文件 @
359c4f09
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -56,7 +56,7 @@ import org.springframework.web.util.WebUtils;
public
class
CookieLocaleResolver
extends
CookieGenerator
implements
LocaleContextResolver
{
/**
* The name of the request attribute that holds the
Locale
.
* The name of the request attribute that holds the
{@code Locale}
.
* <p>Only used for overriding a cookie value if the locale has been
* changed in the course of the current request!
* <p>Use {@code RequestContext(Utils).getLocale()}
...
...
@@ -67,7 +67,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
public
static
final
String
LOCALE_REQUEST_ATTRIBUTE_NAME
=
CookieLocaleResolver
.
class
.
getName
()
+
".LOCALE"
;
/**
* The name of the request attribute that holds the
TimeZone
.
* The name of the request attribute that holds the
{@code TimeZone}
.
* <p>Only used for overriding a cookie value if the locale has been
* changed in the course of the current request!
* <p>Use {@code RequestContext(Utils).getTimeZone()}
...
...
@@ -85,6 +85,8 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
private
boolean
languageTagCompliant
=
true
;
private
boolean
rejectInvalidCookies
=
true
;
@Nullable
private
Locale
defaultLocale
;
...
...
@@ -128,14 +130,36 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/**
* Set a fixed Locale that this resolver will return if no cookie found.
* Specify whether to reject cookies with invalid content (e.g. invalid format).
* <p>The default is {@code true}. Turn this off for lenient handling of parse
* failures, falling back to the default locale and time zone in such a case.
* @since 5.1.7
* @see #setDefaultLocale
* @see #setDefaultTimeZone
* @see #determineDefaultLocale
* @see #determineDefaultTimeZone
*/
public
void
setRejectInvalidCookies
(
boolean
rejectInvalidCookies
)
{
this
.
rejectInvalidCookies
=
rejectInvalidCookies
;
}
/**
* Return whether to reject cookies with invalid content (e.g. invalid format).
* @since 5.1.7
*/
public
boolean
isRejectInvalidCookies
()
{
return
this
.
rejectInvalidCookies
;
}
/**
* Set a fixed locale that this resolver will return if no cookie found.
*/
public
void
setDefaultLocale
(
@Nullable
Locale
defaultLocale
)
{
this
.
defaultLocale
=
defaultLocale
;
}
/**
* Return the fixed
L
ocale that this resolver will return if no cookie found,
* Return the fixed
l
ocale that this resolver will return if no cookie found,
* if any.
*/
@Nullable
...
...
@@ -144,7 +168,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/**
* Set a fixed
TimeZ
one that this resolver will return if no cookie found.
* Set a fixed
time z
one that this resolver will return if no cookie found.
* @since 4.0
*/
public
void
setDefaultTimeZone
(
@Nullable
TimeZone
defaultTimeZone
)
{
...
...
@@ -152,7 +176,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/**
* Return the fixed
TimeZ
one that this resolver will return if no cookie found,
* Return the fixed
time z
one that this resolver will return if no cookie found,
* if any.
* @since 4.0
*/
...
...
@@ -214,16 +238,17 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
}
catch
(
IllegalArgumentException
ex
)
{
String
cookieDescription
=
"invalid locale cookie '"
+
cookieName
+
"': ["
+
value
+
"] due to: "
+
ex
.
getMessage
();
if
(
request
.
getAttribute
(
WebUtils
.
ERROR_EXCEPTION_ATTRIBUTE
)
!=
null
)
{
// Error dispatch: ignore locale/timezone parse exceptions
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Ignoring "
+
cookieDescription
);
}
if
(
isRejectInvalidCookies
()
&&
request
.
getAttribute
(
WebUtils
.
ERROR_EXCEPTION_ATTRIBUTE
)
==
null
)
{
throw
new
IllegalStateException
(
"Encountered invalid locale cookie '"
+
cookieName
+
"': ["
+
value
+
"] due to: "
+
ex
.
getMessage
());
}
else
{
throw
new
IllegalStateException
(
"Encountered "
+
cookieDescription
);
// Lenient handling (e.g. error dispatch): ignore locale/timezone parse exceptions
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Ignoring invalid locale cookie '"
+
cookieName
+
"': ["
+
value
+
"] due to: "
+
ex
.
getMessage
());
}
}
}
if
(
logger
.
isTraceEnabled
())
{
...
...
@@ -320,7 +345,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
/**
* Determine the default time zone for the given request,
* Called if no
TimeZ
one cookie has been found.
* Called if no
time z
one cookie has been found.
* <p>The default implementation returns the specified default time zone,
* if any, or {@code null} otherwise.
* @param request the request to resolve the time zone for
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录