Since you didn't quite provide the exact details in your question, I assume that you have a situation where:
- You are supplying a UserDetailsService to load up a UserDetails when a user attempts to login
- As a part of that service, you are querying a database/DAO to load up details about a user's permissions, and are setting the granted authorities based on this
- That when you say "When I update the permissions" you are referring to updating the user's permissions in the database (or whatever you are storing data in).
If so then what you are seeing is by design - Spring Security only loads the UserDetails for the user the first time, when they attempt to login, and then stores it in Session from then on. Generally this makes sense, as it avoids the application from having to perform the same queries about user details on each request. Also, a user's permissions are generally not changing throughout 99.9% of their visits.
To change this behavior, you might want to look into adding a "refresh" command/page somewhere that will trigger some code (which you will have to write) which will re-query the UserDetailsService and replace the UserDetails in SecurityContext. I don't believe there is any built-in way to do this.