【发布时间】:2015-06-29 14:49:29
【问题描述】:
有没有办法集成 Spring Security 4(主要用于管理用户访问级别以及他们可以访问哪些视图)和 JSF 2?
我找到了this neat thing,它允许您将 Spring Boot 和 JSF 2 与 PrimeFaces 5 混合使用。很棒的东西。我想看看你能不能把它提升一个层次。
通常你会像这样为 Spring MVC 配置 Spring Security:
WebSecurityConfig.java
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("Zyst").password("password").roles("USER");
}
}
然后据我所知,如果我弄错了,请纠正我,查看您的 MvcConfig 以了解“/home”之类的实际含义:
MvcConfig.java
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/").setViewName("home");
registry.addViewController("/hello").setViewName("hello");
registry.addViewController("/login").setViewName("login");
}
}
但是,我已经在谷歌上搜索了几个小时,并没有真正找到如何为 JSF 配置 Spring Security 的结论性答案。你可以使用 JSF 实现你的前端,然后让它由 Spring Security 管理,因此,例如链接,即:localhost:8080/home 而不是 localhost:8080/home.xhtml 得到适当的管理和服务?这样WebSecurityConfig.java 中定义的用户级别只能访问与自己相关的页面。
根据我(简要地)调查过的情况,这可能是不可能的,因为 Faces 和 Mvc 是不同的技术,不能很好地协同工作。但是,如果可能的话,我想确定它是否可能。
如果可能的话,您能否提供一个可行的示例,或者提供一个更深入的地方的链接?我用谷歌搜索了很多,但 100% 有可能我最终遗漏了一些东西。
非常感谢任何和所有的答案。
【问题讨论】:
-
"但是,我已经用谷歌搜索了几个小时,并没有真正找到如何为 JSF 配置 Spring Security 的结论性答案"。与您在顶级 Spring 上单独使用 Spring MVC 时配置 Spring Security 的操作没有什么不同。 JSF 也可以在 Spring 框架之上使用。 Spring Security 也是如此。在这种情况下,Spring MVC 和 PrimeFaces 是不同的故事(是的,您最初出于某些不清楚的原因将它们都标记为 [Spring MVC] 和 [PrimeFaces])。
标签: spring jsf spring-security spring-boot