Being the test-driven developer that you are, you are writing a Jasmine test for your AngularJS factory function, which returns a promise generated by our beloved $q. You know how to test an asynchronous response with Jasmine. You confidently run the test and... bam, you get an error message "Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL"
You are developing your web client (AngularJS or any other) against your REST services' server, secured using cookies-based sessions and CSRF tokens sent as cookies. You've done everything by the book, followed the tutorials to make your security work, especially CORS and CSRF tokens. And yet you still get a pesky 403 when trying to login!
After a summer break we return to our secure web client / REST-based solution: in this post we examine how our AngularJS-based web client should behave in order to comply with the security measures we've enforced on the server side.
A full, secure implementation of a solution for web-client, REST-based systems using AngularJS and Spring and addressing authentication, CORS and CSRF aspects. The full, working code is available on GitHub. In this part, we setup the project and examine how CORS is configured on the server side.
It's might not be a well-know feature, but AngularJS allows you to use the ng-required argument on input and textarea fields. And that can be quite handy!