Kib*_*gon 6 locale spring-security internationalization
请原谅我,如果之前已经问过这个问题,但我还没有得到一个帮助我解决问题的直接答案.我有一个使用spring-security保护的gwt应用程序.Spring安全性只是验证用户身份并重定向到gwt应用程序.现在我希望用户能够从登录页面上的链接更改区域设置,之后区域设置将存储在cookie上并在应用程序中使用.
我在applicationContext.xml中有以下配置
<http auto-config="true">
<intercept-url pattern="/mywebapp/**" access="ROLE_USER"/>
<intercept-url pattern="/gwt/**" access="ROLE_USER"/>
<intercept-url pattern="/**/*.html" access="ROLE_USER"/>
<intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<form-login login-page="/login.jsp"/>
</http>
<beans:bean id="userDetailsService"
class="com.kibet.mywebapp.server.auth.UserDetailsServiceImpl">
</beans:bean>
...
<!-- Application Message Bundle -->
<beans:bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename" value="classpath:messages" />
<beans:property name="defaultEncoding" value="UTF-8"/>
</beans:bean>
<beans:bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="lang" />
</beans:bean>
<beans:bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<beans:property name="defaultLocale" value="pt"/>
</beans:bean>
<beans:bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<beans:property name="interceptors">
<beans:list>
<beans:ref bean="localeChangeInterceptor"/>
</beans:list>
</beans:property>
<beans:property name="mappings">
<beans:value>/login.jsp=userDetailsService</beans:value>
</beans:property>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我的类路径中有locale属性文件messages_en.properties,messages_es.properties和messages_pt.properties.它唯一有效的时间是我更改浏览器的默认语言环境.据我所知,登录页面是由spring-security生成的,处理程序映射不能拦截语言环境更改请求.如果这就是我如何解决这个问题的原因?非常感谢帮助.
这是我的自定义过滤器代码.
public class InternationalizationFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
String newLocale = request.getParameter("lang");
if (newLocale != null) {
Locale locale = StringUtils.parseLocaleString(newLocale
.toLowerCase());
LocaleContextHolder.setLocale(locale);
}
try {
filterChain.doFilter(request, response);
} finally {
LocaleContextHolder.resetLocaleContext();
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}}
Run Code Online (Sandbox Code Playgroud)
它LocaleChangeInterceptor是 Spring MVC 的一部分,这意味着它们不会出现在 Spring 安全过滤器中。您必须在过滤器链中自行设置区域设置。另请参阅Spring Security/SEC-1527:国际化示例应用程序之一
| 归档时间: |
|
| 查看次数: |
17372 次 |
| 最近记录: |