增加春天petclinic的安全性

时间:2014-03-25 18:43:20

标签: java spring spring-mvc spring-security

我正在尝试学习Spring安全性,并且我想为spring petclinic示例应用程序添加安全功能(代码为at this link)。但是,网上的样品存在问题。

例如,我想使用this example,但它在init文件夹中使用.java文件(您可以查看at this link)来执行我认为petclinic应用程序使用xml执行的任务文件(您可以查看at this link)。

我想坚持使用xml方法,因为我花了好几个月使用xml配置,但我不明白使用xml配置和java配置之间的区别。

是否有人可以帮助我了解我必须对this example进行哪些更改才能使其与spring petclinic应用中的xml配置一起使用?

或者,如果您能够快速简便地在spring petclinic应用程序上启动并运行安全性,以便我可以通过修改工作代码来开始学习,那也没关系。

我开始使用spring教程为petclinic应用程序(at this link)添加安全性,但它不可用,因为它已有很多年的历史并且使用了过时版本的spring。


编辑:

根据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 by clicking on this link

但是现在web.xml中的更改导致错误,表明Tomcat无法启动,因为SpringSecurityFilterChain的定义是多余的。我已在文件共享网站上发布了整个堆栈跟踪,您可以阅读by clicking on this link

如何摆脱此错误以便启动tomcat,以便为应用启用登录功能?

1 个答案:

答案 0 :(得分:0)

将此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安全设置的tutorial