Java 为spring petclinic添加安全性
我正在尝试学习Spring安全性,我想将安全功能添加到Spring petclinic示例应用程序(其代码为)。然而,网络上的样本存在问题 例如,我想使用,但它使用init文件夹(您可以查看)中的.java文件来执行任务,我认为petclinic应用程序使用xml文件(您可以查看)来执行这些任务 我想坚持使用xml方法,因为我已经花了好几个月的时间使用xml配置,但我不理解使用xml配置和java配置之间的区别 有人能帮我了解为了让它与spring petclinic应用程序中的xml配置一起工作,我需要做哪些更改吗? 或者,如果你能展示一种快速简便的方法,让工作安全性在SpringPetClinic应用程序上启动并运行,这样我就可以通过修补工作代码开始学习,那也没问题 我开始使用spring教程为petclinic应用程序()添加安全性,但它不可用,因为它已经存在多年,并且使用了过时的spring版本Java 为spring petclinic添加安全性,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我正在尝试学习Spring安全性,我想将安全功能添加到Spring petclinic示例应用程序(其代码为)。然而,网络上的样本存在问题 例如,我想使用,但它使用init文件夹(您可以查看)中的.java文件来执行任务,我认为petclinic应用程序使用xml文件(您可以查看)来执行这些任务 我想坚持使用xml方法,因为我已经花了好几个月的时间使用xml配置,但我不理解使用xml配置和java配置之间的区别 有人能帮我了解为了让它与spring petclinic应用程序中的xml配置一起工
编辑: 根据JHadesDev的建议,我创建了一个名为
org.springframework.security.samples.petclinic.config
的新包,并在其中放置了以下两个文件:
SecurityConfig.java:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void registerGlobalAuthentication(
AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
MessageSecurityWebApplicationInitializer.java
@Order(2)
public class MessageSecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {}
尝试运行该应用程序之后导致一个错误,表明Tomcat无法启动,因为需要识别SpringSecurityFilterChain
,因此我修改了我的web.xml
,将其包含在内。您可以阅读我的整个web.xml
但是现在web.xml
中的更改导致了一个错误,表明Tomcat不会启动,因为SpringSecurityFilterChain
的定义是冗余的。我已经在一个文件共享站点上发布了整个堆栈跟踪,您可以阅读
如何消除此错误以启动tomcat,并启用应用程序的登录功能?将此java配置放在其他
@Config
文件旁边:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin();
}
}
此配置确保应用程序中的所有URL都是安全的,并生成默认登录页面。这将是一个很好的起点,请参阅使用Java配置(而不是XML)进行Spring安全设置的过程。感谢您的帮助。我不明白你的答案。你介意说得更清楚些吗?首先,您是说将您的
SecurityConfig
类添加到petclinic应用程序的此文件夹中吗?我把这个问题重新解释成另一个更清楚的问题。你愿意帮我吗?以下是链接: