像这样使用cURL
:
curl -d j_username=admin -d j_password=admin -L http://localhost:8080/app/j_spring_security_check
CSRF
如果你得到类似的东西Expected CSRF token not found. Has your session expired?
意味着 CSRF 令牌保护已启用。要使用 cURL 对其进行测试,您需要一个 cookie 和一个 CSRF 令牌本身。
以下命令会将所有 cookie 写入一个名为cookie
并打印出 CSRF 令牌的文件。Spring Security 默认令牌参数名称是_csrf
,如果您更改了它,那么您也需要更改grep csrf
。
curl --cookie-jar cookie -L http://localhost:8080/app/j_spring_security_check | grep csrf
然后您可以执行下一个命令,该命令将传递文件中的所有 cookie。不要忘记替换|your_token_value|
为上一个命令打印出的实际值(以及_csrf
参数名称,如果您已更改它)。
curl --cookie cookie -d "j_username=admin&j_password=admin&_csrf=|your_token_value|" -L http://localhost:8080/app/j_spring_security_check
从 Spring Security 3.x 到 4.x
请注意,在 Spring Security 4.x 中,login-processing-url
从更改/j_spring_security_check
为 POST/login
的默认值、username-parameter
从更改j_username
为的默认值以及从更改为的username
默认值。如果应用程序明确提供这些属性,则迁移不需要任何操作。password-parameter
j_password
password