Tag: spring mvc

Spring MVC +在建议之前检查安全性

我正在测试Spring AOP框架并提出以下问题。 我有以下代码: package danny.test.controllers; @Controller public class MyController{ @Autowired private DaoService service; @RequestMapping(value=”/save”,method = RequestMethod.POST) public String addUser(@Valid MyClass myClass, BindingResult result){ service.save(myClass); return “Ok”; } 我想在Advice方面之前创建以检查用户会话中的用户安全性。 @Aspect public class Profiler { @Pointcut(“execution(* danny.test.services.DaoServices.*.*(..))”) public void methods(){} @Before(“methods()”) public void checkSecurity() throws Throwable{ //check session if user is authenticated…. } } 我不知道该怎么做是取消执行DaoServices.save方法,如果用户未经过身份validation并导致控制器返回任何其他值而不是“ok”。 我可以做吗? 有人能指出我这样的例子吗? […]

如何强制Spring Security更新XSRF-TOKEN cookie?

Spring Boot应用程序中的REST Spring Security /user服务无法在用户进行身份validation时立即更新XSRF-TOKEN cookie。 这导致/any-other-REST-service-url的下一个请求返回Invalid CSRF certificate错误,直到再次调用/user服务。 如何解决此问题,以便REST /user服务在首先validation用户的同一请求/响应事务中正确更新XSRF-TOKEN cookie? 后端REST /user服务由前端应用程序调用三次,但/user服务仅在第一次和第三次调用时返回匹配的JSESSIONID/XSRF-TOKEN cookie,而不是在第二次调用时返回。 在对服务器的第一个请求中,没有凭证(没有用户名或密码)发送到/ url模式,我认为调用/user服务,服务器响应JSESSIONID和XSRF-TOKEN它与匿名关联用户。 FireFox开发人员工具的“网络”选项卡将这些cookie显示为: Response cookies: JSESSIONID:”D89FF3AD2ACA7007D927872C11007BCF” path:”/” httpOnly:true XSRF-TOKEN:”67acdc7f-5127-4ea2-9a7b-831e95957789″ path:”/” 然后,用户可以无错误地对公共可访问资源发出各种请求,FireFox开发人员工具的“网络”选项卡显示这些相同的cookie值。 对/user服务的第二个请求是通过登录表单完成的,该表单发送有效的用户名和密码, /user服务使用该用户名和密码来validation用户。 但/user服务仅返回更新的jsessionid cookie,并且不会在此步骤中更新xsrf-token cookie。 以下是此时FireFox开发人员工具的“网络”选项卡中显示的Cookie: 200 GET user在FireFox的“网络”选项卡中包含以下Cookie: Response cookies: JSESSIONID:”5D3B51A03B9AE218586591E67C53FB89″ path:”/” httpOnly:true AUTH1:”yes” Request cookies: JSESSIONID:”D89FF3AD2ACA7007D927872C11007BCF” XSRF-TOKEN:”67acdc7f-5127-4ea2-9a7b-831e95957789″ 请注意,响应包含新的JSESSIONID ,但未包含新的XSRF-TOKEN 。 这导致不匹配导致对其他rest服务的后续请求中的403错误(由于无效的csrf令牌),直到通过对/user服务的第三次调用解决此问题。 有没有办法我们可以强制前面的200 get user也返回新的XSRF-TOKEN ? 对后端REST /user服务的第三次调用使用与上面显示的第二个请求中使用的用户名和密码相同的凭据,但第三次调用/user导致XSRF_TOKEN […]

@ControllerAdviceexception处理程序方法未被调用

我正在为Spring MVC中的exception处理示例演示应用程序。我正在尝试Exception Handling With @ControllerAdvice 我按照此链接中描述的步骤进行操作。 但是当我运行我的应用程序时,我得到以下错误 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.test.core.ApplicationException 有关详细信息,请参阅我正在处理的课程 ApplicationException.java public class ApplicationException extends RuntimeException{ /** * */ private static final long serialVersionUID = -9061684361606685158L; private ErrorStatus errorStatus; private int msgNumber; private Object []args; public ApplicationException(){} public ApplicationException(ErrorStatus errorStatus, int msgNumber, Object[] args) { this.errorStatus = errorStatus; this.msgNumber […]

手动validation使用弹簧安全性

我正在使用spring security并且工作正常,但是现在我想手动启动安全过程,对客户端进行更改我需要在控制器中获取用户名和密码(表单不会直接调用“j_spring_security_check”) 我想到了两个选项,我有一些问题: 在我获取参数并执行某些操作后,我将向j_spring_security_check url发送一个发布请求。 我的代码: public void test(loginDTO loginDTO){ MultiValueMap body = new LinkedMultiValueMap(); HttpHeaders headers = new HttpHeaders(); body.add( “j_username”, loginDTO.getJ_username()); body.add( “j_password”, loginDTO.getJ_password()); HttpEntity httpEntity = new HttpEntity( body, headers); headers.add( “Accept”, MediaType.APPLICATION_JSON_VALUE); restTemplate.exchange( “http://localhost:8080/XXX/j_spring_security_check”, HttpMethod.POST, httpEntity, HttpServletResponse.class); } 这不起作用,我得到:500内部服务器错误为什么? 第二种选择 – 我做了以下事情: public void test2(loginDTO loginDTO, HttpServletRequest request) { UsernamePasswordAuthenticationToken token […]

使用Java Config的全局CORS配置不起作用

我正在努力使用Java配置来运行Global CORS配置。 我不确定它是否是一个已知问题,因为其他人也有同样的问题: Spring Global CORS配置不起作用但控制器级别配置没有 无论如何,让我进一步阐述我想要做的事情: 我正在使用Spring 4.2.3.RELEASE(没有弹簧启动)。 我正在尝试使用Java配置配置全局CORS配置,以便我可以使用属性文件中的@Value注入CORS域(allowed-Origin)。 因为据我所知,我不能在mvc xml名称空间中为allowed-origin注入值,如下图所示(如果您知道任何其他解决此问题的方法,请告诉我): 从Spring参考文档这里 ,我试图使用java配置来配置Global CORS来解决问题。 但是,我无法让CORS工作。 代码在应用程序启动期间调用,但客户端的调用始终返回 请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此不允许Origin’http:// localhost:3000 ‘访问 @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Value(“${vrm.cors.domain}”) //vrm.cors.domain=/** private String corsDomain; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(“/**”). .allowedOrigins(vrm.cors.domain); } }

Spring MVC 2.5:如何加载属性文件

我需要加载许多属性文件,这些文件位于resources文件夹中。 我有一个名为abc_en.properties的资源,其内容如下: a = x b = y c = z 我需要在Java方法中使用属性sing java.util.Properties: java.util.Properties reportProperties = new java.util.Properties(); … String a = reportProperties.getProperty(“a”); 我怎样才能做到这一点? 谢谢

在spring mvc中添加css

我已经在这个网站和许多其他人看到了很多解决方案,但这对我来说似乎没什么用。 所以我再次提出这个常见问题如何使用spring mvc配置css 这是我的配置 web.xml中 log4jConfigLocation classpath:log4j.xml contextConfigLocation /WEB-INF/spring-servlet.xml /WEB-INF/security-context.xml org.springframework.web.context.ContextLoaderListener org.springframework.web.util.Log4jConfigListener springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* spring org.springframework.web.servlet.DispatcherServlet 1 spring / default *.css index.html index.htm index.jsp default.html default.htm default.jsp 为spring-servlet.xml classpath:hibernate.cfg.xml org.hibernate.cfg.AnnotationConfiguration ${jdbc.dialect} true 我的css文件位置 src/main/webapp/css/test.css jsp代码 Login test test.css body {color:blue;} h1 {color:#00ff00;} 请告诉我在哪里犯错误谢谢

在Spring的RequestMapping中,{parameter:。+}与{parameter}不同

我正在看一些使用RequestMapping的Spring代码,如下所示: @RequestMapping(“/foo/{bar:.+}”) 这在function上是否与以下不同? @RequestMapping(“/foo/{bar}”) 从我可以看出,RegExp总是应用于斜杠之间的段,所以两者应该是等价的(尽管可能。+可能会说“非空?”)。 我想另一种表达问题的方法可能是: Spring的{bar}相当于{bar:.*}或{bar:.+}吗?

Spring Framework上的multithreading(或异步)计算

我正在学习Spring Framework,它非常棒。 我想使用JAVAmultithreading,但我不知道如何使用Spring Framework。 这是服务代码: //StudentService.java public List loadGradesForAllStudents(Date date) { try{ List grades = new ArrayList(); List students = loadCurrentStudents(); // LOAD FROM THE DB for(Student student : students) { // I WANT TO USE MULTITHREAD FOR THIS PART // LOAD FROM DB (MANY JOINS) History studentHistory = loadStudentHistory(student.getStudentId(), date); // CALCULATION PART Grade […]

具有身份validation的Spring Boot项目结构

我正在学习Spring启动及其模块,但我希望避免学习不良实践。 那么你能告诉我通常使用什么项目结构吗? 我正在使用这个结构: com +- example +- myproject +- Application.java | +- config | +- CustomSecurityConfig.java (extends WebSecurityConfigurerAdapter) | +- domain | +- Customer.java | +- repository | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web +- CustomerController.java 现在我需要实现JWT身份validation,所以我有了新的类: 用于安全filter链的CustomAuthFilter.java AuthenticationManager的CustomUserDetailsS​​ervice.java CustomEntryPoint.java用于处理exception 用于管理jwt令牌的CustomJwtService.java 用于其他端点的CustomAuthController.java,如/ login,/ logout,/ create-user,/ reset-password 你能告诉我这个class的哪个店吗? 我有两个想法: 创建安全文件夹并将其放在一起 将文件拆分为现有文件夹,如:CustomAuthFilter.java […]