我已经在我的jsf应用程序中实现了spring安全性。一切正常,除了静态资源需要身份验证。这是我的配置
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/register", "/resources/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
经过一些谷歌搜索,大多数解决方案是添加MVC资源标签。
<mvc:resources mapping="/resources/**" location="/resources/"
cache-period="31556926"/>
我发现了类似的注释,并为此添加了一个配置类
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
// equivalents for <mvc:resources/> tags
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
}
// equivalent for <mvc:default-html" target="_blank">servlet-handler/> tag
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
但是仍然静态资源需要身份验证。有关如何进行此工作的一些帮助将非常有用。
注意:我的资源位于中/src/main/webapp/resources/{css|js|image}
。问题是如果用户未登录,则css,js的效果不会显示在登录页面中。用户登录一次,登录后进入登录页面,出现css效果。
JSF管理的库资源是从/javax.faces.resource/**
路径提供的。因此,您需要将该路径公开访问:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/register", "/javax.faces.resource/**").permitAll()
.antMatchers("/**").authenticated()
.and().formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
您可能还希望浏览器缓存这些资源。然后,将此片段添加到您的配置中,该配置为与的请求匹配的每个响应添加一个标头编写器/javax.faces.resource/**
:
http.headers()
.addHeaderWriter(new DelegatingRequestMatcherHeaderWriter(
new AntPathRequestMatcher("/javax.faces.resource/**"),
new HeaderWriter() {
@Override
public void writeHeaders(HttpServletRequest request,
HttpServletResponse response) {
response.addHeader("Cache-Control", "private, max-age=86400");
}
}))
.defaultsDisabled();
我已经在我的jsf应用程序中实现了Spring Security性。除了静态资源需要认证之外,一切都很好。这是我的配置 在做了一些谷歌搜索后,大多数解决方案是添加mvc资源标签。 我发现了类似的注释,并为此添加了一个配置类 但是静态资源仍然需要身份验证。一些关于如何使其工作的帮助会很好。 注意:我的资源放在中。问题是如果用户没有登录,css、js的效果不会显示在登录页面。用户登录一次后,登录后进入
问题内容: 我有一个JSF验证程序,用于检查“容器编号”字符串是否符合ISO-6346规范。 它工作正常,但是我需要根据容器编号来自的Bean中的其他值添加一些条件处理。这个Bean可以是几种不同的类型。 有什么方法可以在验证器中访问Bean并对其执行操作?理想情况下,我希望将其保留为验证器,但是,如果没有解决方案,则必须在持久化之前在Bean中实现逻辑。 我在想一些类似的事情: 更新: 在许多方
我读了一大堆这么多的问题,但我似乎找不到答案。 我有以下课程: 在其他地方,我试图访问这些字符串: 为什么我会得到一个IllegalAccess异常?如果我删除field.get行,我可以在LogCat中看到以下行: 参考资料: 使用反射在Java中获取成员变量值的陷阱 反射:通过反射加载的类中的常量变量 通过反射访问Java静态最终ivar值
我想知道是否有人有只通过servlet访问网站资源的解决方案。我的所有资源都在WEB-INF下。换句话说,我不希望用户直接访问我的任何资源。
我已经在Centos远程服务器上安装并设置了Rabbitmq。后来,我创建了一个文件“rabbitmq.config”,并添加了以下代码行 [{rabbit,[{loopback_users,[]}]}]
主要内容:1.引入jar包,2.配置文件编写,3.编写数据库,4.编写实体类,5.编写Mapper接口,6.在业务层中引入用户的用户名和密码,7.测试1.引入jar包 2.配置文件编写 appilication.properties 需要注意后面需要加上时区,因为当前引入的是SpringBoot2以上的版本 3.编写数据库 4.编写实体类 5.编写Mapper接口 这里是继承了BaseMapper接口 6.在业务层中引入用户的用户名和密码 第一个是导入UserMapper接口 第二个是根据接口去