Tag: spring

使用@ExceptionHandler处理spring安全authenticationexception

我使用Spring MVC的@ControllerAdvice和@ExceptionHandler来处理REST API的所有exception。 它适用于web mvc控制器抛出的exception,但对于Spring安全自定义筛选器引发的exception无效,因为它们在调用控制器方法之前运行。 我有一个自定义的春季安全filter,执行基于令牌的身份validation: public class AegisAuthenticationFilter extends GenericFilterBean { … public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { try { … } catch(AuthenticationException authenticationException) { SecurityContextHolder.clearContext(); authenticationEntryPoint.commence(request, response, authenticationException); } } } 有了这个自定义的入口点: @Component("restAuthenticationEntryPoint") public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint{ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authenticationException) throws […]

在Spring Boot的application.properties中使用envvariables

我们正在开发一个Spring Boot web应用程序,我们使用的数据库是MySql ; 我们的设置是我们首先在本地进行testing(意味着我们需要在我们的PC上安装MySql); 然后我们推到Bitbucket ; Jenkins自动检测到对Bitbucket的新推送,并对其进行构build(对于Jenkins mvn构build,我们还需要在运行Jenkins的虚拟机上安装MySql)。 如果Jenkins构build通行证,我们将代码推送到OpenShift上的应用程序(使用Jenkins上的Openshift部署插件)。 我们所遇到的问题你可能已经知道了: 在application.properties我们不能硬编码MySql的信息。 由于我们的项目将在3个不同的地方( 本地 , Jenkins和OpenShift )运行,因此我们需要在application.properties中使数据源字段dynamic化(我们知道有不同的方法,但我们现在正在开发此解决scheme) 。 spring.datasource.url = spring.datasource.username = spring.datasource.password = 我们提出的解决scheme是我们在本地创build系统环境variables ,并在Jenkins虚拟机(以OpenShift命名的方式命名它们)并分配给它们正确的值: export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost" export OPENSHIFT_MYSQL_DB_PORT="3306" export OPENSHIFT_MYSQL_DB_USERNAME="root" export OPENSHIFT_MYSQL_DB_PASSWORD="123asd" 我们已经完成了这个工作。 我们还检查了Map<String, String> env = System.getenv(); 环境variables可以变成javavariables,如下所示: String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD"); String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME"); String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); String sqlPort […]

如何从Spring Security中使用新的PasswordEncoder

从Spring Security 3.1.4.RELEASE开始,旧的org.springframework.security.authentication.encoding.PasswordEncoder 已被弃用 ,转而使用org.springframework.security.crypto.password.PasswordEncoder 。 由于我的应用程序还没有公开发布,我决定转移到新的,不被弃用的API。 到目前为止,我有一个ReflectionSaltSource自动使用用户的注册date作为每个用户的盐密码。 String encodedPassword = passwordEncoder.encodePassword(rawPassword, saltSource.getSalt(user)); 在login过程中,Spring也使用我的bean来validation用户是否可以login。我无法在新密码编码器中实现这一点,因为SHA-1的缺省实现 – StandardPasswordEncoder只能添加一个编码器创build过程中的全局秘密盐。 有没有任何合理的方法来设置它与未弃用的API?

Spring XmlBeanFactory已弃用

我试图学习spring。 我正在关注这个网站http://www.roseindia.net/spring/spring3/spring-3-hello-world.shtml 我尝试了一个例子。 我正在使用一些如下所示,但在这里显示: XmlBeanFactorytypes已被弃用 我必须使用什么来替代这个? public class SpringHelloWorldTest { public static void main(String[] args) { XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml")); Spring3HelloWorld myBean = (Spring3HelloWorld)beanFactory.getBean("Spring3HelloWorldBean"); myBean.sayHello(); } }

在哪里可以find@Inject jar

我正在从这个网站的MVCunit testing说明,但我无法find@Inject注释的jar。 有人知道jar子在哪里吗?

在部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,出现java.lang.IllegalArgumentException

环境:应用服务器:Apache 7.0.54 Java:“1.8.0_05”操作系统:Mac OS X 10.9.3 库:Spring 3.2 REST应用程序 以下是部署期间收到的错误: localhost.2014.06.09.log Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext Jun 09, 2014 3:37:47 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of […]

执行JpaTest时无法find@SpringBootConfiguration

我是新来的框架(只是通过类),这是我第一次使用springboot。 我试图运行一个简单的Junittesting,看看我的CrudRepositories是否确实工作。 我不断收到的错误是: 无法find@SpringBootConfiguration,您需要使用@ContextConfiguration或@SpringBootTest(classes = …)与您的testingjava.lang.IllegalStateException 不是春季开机configuration本身? 我的testing课 @RunWith(SpringRunner.class) @DataJpaTest @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class JpaTest { @Autowired private AccountRepository repository; @After public void clearDb(){ repository.deleteAll(); } @Test public void createAccount(){ long id = 12; Account u = new Account(id,"Tim Viz"); repository.save(u); assertEquals(repository.findOne(id),u); } @Test public void findAccountByUsername(){ long id = 12; String username = […]

@EnableWebSecurity和@EnableWebMvcSecurity有什么区别?

@EnableWebSecurity JavaDoc文档: 将此注释添加到@Configuration类中,以使Spring Securityconfiguration在任何WebSecurityConfigurer定义,或者更可能通过扩展WebSecurityConfigurerAdapter基类和重写单个方法。 @EnableWebMvcSecurity JavaDoc文档: 将此注释添加到@Configuration类,以使Spring Securityconfiguration与Spring MVC集成。 “ 与Spring MVC集成 ”究竟意味着什么? 我能得到什么额外的行为? 我find了指南和答案 ,这表明这个注释添加了CSRF Tokens到Spring MVC Forms,这是它​​增加的唯一的东西吗?

REST与Spring和Jackson完全数据绑定

我正在使用Spring MVC来处理JSON POST请求。 在封面下面,我使用了构build在Jackson JSON处理器上的MappingJacksonHttpMessageConverter,并在使用mvc:annotation驱动时启用。 我的一项服务收到一个行动清单: @RequestMapping(value="/executeActions", method=RequestMethod.POST) public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) { logger.info("executeActions"); return "ACK"; } 我发现Jackson将requestBody映射到java.util.LinkedHashMap项目列表(简单数据绑定)。 相反,我希望将请求绑定到types化对象列表(在本例中为“ActionImpl”)。 我知道如果直接使用Jackson的ObjectMapper,这很容易: List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { }); 但是我想知道当使用Spring MVC和MappingJacksonHttpMessageConverter时,最好的方法是什么。 任何提示? 谢谢

Spring 3.1inheritance的Hibernate 4exception

嗨,我刚刚开始使用Spring,与Hibernate4和Maven。 基本上我的类层次结构是从MicroTask扩展的HUmanMicroTask。 将来可能会有几个其他类从MicroTask扩展。 我试图有一个每个具体类的表,这是最简单的方法来启动和运行spring3和hibernate4.然而,当我运行我的代码。 我不断收到以下exception 13:11:52,260 ERROR TestContextManager:324 – Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6ef137d] to prepare test instance [HumanMicroTaskBaseHibernateTest@52c05d3b] java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) […]