You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security 3.1.3.RELEASE使用问题及代码片段咨询

聊聊Spring Security 3.1.3下你的接口配置问题

嘿,我看到你参考2013年的技术书用了Spring Security 3.1.3.RELEASE,还贴了两个Controller的代码片段,结合这个版本的特性,我整理了几个常见的坑和解决办法:

先把你的代码理清楚

AdminController

// AdminController
@Controller
@RequestMapping("/admin")
public class AdminController {
    @RequestMapping(method=RequestMethod.POST, value="/movies")
    @ResponseBody
    public String createMovie(@RequestBody String movie) {
        System.out.println("Adding movie!! "+movie);
        return "created";
    }
}

LoginController

// LoginController
@Controller
@RequestMapping("")
public class LoginController {
    // 你这里代码没贴全,不过这类Controller一般是处理登录页面跳转、登录请求提交这些逻辑对吧?
}

几个需要注意的点和解决方案

1. POST接口的CSRF坑

Spring Security 3.1.x默认是开着CSRF防护的,像你这个/admin/movies的POST接口,如果用Postman或者移动端这类非浏览器客户端调用,大概率会碰到403禁止访问的问题。

  • 解决办法分两种:
    • 如果你的服务是纯REST接口,不需要支持浏览器表单提交,直接在Spring Security配置里关掉CSRF就行:
      <!-- 放在你的Spring Security XML配置文件里 -->
      <security:http>
          <!-- 其他配置项 -->
          <security:csrf disabled="true"/>
      </security:http>
      
    • 如果必须保留CSRF防护,那就要在请求头里带上X-CSRF-Token,这个token可以从登录页面的隐藏域拿,或者专门写个接口返回给客户端。

2. 管理员接口的权限控制

/admin/**这种接口肯定得只让管理员访问对吧?你得在Spring Security里加权限规则:

<security:http>
    <!-- 配置只有拥有ROLE_ADMIN权限的用户才能访问/admin下的所有接口 -->
    <security:intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
    <!-- 其他拦截规则,比如登录页面、公开接口之类的 -->
    <security:form-login login-page="/login" default-target-url="/"/>
</security:http>

记得给你的管理员账号配上ROLE_ADMIN的权限哦。

3. @RequestBody接收参数的优化

你现在用String接收请求体,后续处理起来肯定麻烦,不如定义个Movie实体类来接收:

public class Movie {
    private String title;
    private String director;
    // 记得加getter和setter方法
}

然后把Controller方法改成这样:

@ResponseBody
public String createMovie(@RequestBody Movie movie) {
    System.out.println("Adding movie!! "+movie.getTitle());
    return "created";
}

Spring会自动帮你把JSON请求体解析成对象,方便多了。

4. 版本兼容性和安全问题

Spring Security 3.1.3确实有点年头了,存在不少已知的安全漏洞,如果不是必须兼容老系统,建议升级到更稳定的版本(比如4.x或者5.x),不过升级要注意和Spring框架版本的匹配:

  • Spring Security 3.1.x对应Spring Framework 3.1.x
  • 要升4.x的话,得用Spring Framework 4.0及以上版本

内容的提问来源于stack exchange,提问作者Eddy Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:34:35