在Java中取用户信息的代码:
1 | Object principal = SecurityContextHolder.getContext() |
spring security 3的配置示例:applicationContext-security.xml
1 | <intercept-url pattern="/dwr/**" filters="none"/> |
当你的servlet、action或Spring MVC的C(Control)相对应的url是以/mydefalut/开头,如果你要使用SecurityContextHolder获取用户信息,那么我告诉你,你想都别想。绝对是不可能的!
当你的servlet、action或Spring MVC的C相对应的url是以/admin/开头(或者其它没有没有配置filter为none的url),如果你要使用SecurityContextHolder获取用户信息,那么我想你是没有问题的。
产生原因:
1 | <filter> |
Spring Security的工作原理:Spring Security就是一个filter,如果你把Spring Security的配置文件中某个url-pattern 的filter配置为none,那么与这个url相关的请求,Spring Security是不会干活滴!
- PS:原文出处