spring security spring mvc ajax 请求 controller 被拦截

各位大神 请教个 spring security 问题 getAjax"../menu/loadmenu", "", function data { 这样会被拦截 因为 这个地址在数据库里面没有存 如果 在xml 里面配置了 <security:http pattern="/main/*" security="none"/>
是可以访问了 但是在controller 里面就获取不到当前登录用户的信息了

你是烦恼在spring security中怎么进行ajax请求吧。一般的ajax请求在Spring Security中是被forbidden的,因为请求的时候csrf这个token为null。官方提供了一个解决办法,参考官方文档http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html

具体办法就是
1、在jsp页面的head标签内添加如下代码:
<meta name=”_csrf” content=”${_csrf.token}”/>
<!– default header name is X-CSRF-TOKEN –>
<meta name=”_csrf_header” content=”${_csrf.headerName}”/>

2、在ajax请求前添加如下代码:
var token = $”meta[name=_csrf]”.attr”content”;
var header = $”meta[name=_csrf_header]”.attr”content”;
$document.ajaxSendfunctione, xhr, options {
xhr.setRequestHeaderheader, token;
};

这样就能正常使用ajax请求了。
可参考我的这篇博客http://jeesun.github.io/2016/03/27/Spring-Security%E5%A4%84%E7%90%86Ajax%E8%AF%B7%E6%B1%82/

发表评论

电子邮件地址不会被公开。 必填项已用*标注