在 Java WebSecurityConfigurerAdapter 中禁用 CSRF。弹簧休息

我正在用 Spring 和 Tiles 做一个新的 webapp。到目前为止,我已经登录,创建/编辑用户工作。现在我必须从带有 json 的第三个应用程序的 Rest Controller 开始。我只需要在其余 URL 上禁用 csrf。


我尝试使用 spring 中的 XML <csrf disabled="true"/>,它可以工作,但是对于整个应用程序,有没有办法通过路径进行此配置,或者唯一的方法是用 Java 写下来?:


@Configuration

@EnableWebSecurity

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {



    @Override

    protected void configure(HttpSecurity http) throws Exception {

        http.csrf().disable();

    }

}

这对我不起作用,我发现的每个简单示例都是相同的,并且似乎对除我之外的所有人都有效,我做错了什么?


弹簧安全配置:


<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/security"

    xmlns:beans="http://www.springframework.org/schema/beans" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

        http://www.springframework.org/schema/security

        http://www.springframework.org/schema/security/spring-security.xsd">


    <http auto-config="true">

<!--        <csrf disabled="true"/>  -->

        <intercept-url pattern="/" access="permitAll" />

        <intercept-url pattern="/welcome" access="hasRole('ROLE_ADMIN')"/>

<!--        <intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" access="ROLE_USER,ROLE_ADMIN"/> -->

        <intercept-url pattern="/administration/**" access="hasRole('ROLE_ADMIN')"/>

        <form-login login-page="/login" default-target-url="/" authentication-failure-url="/login?error" username-parameter="username" password-parameter="password" />

        <logout logout-success-url="/login?logout" />

    </http>



千巷猫影
浏览 257回答 1
1回答

一只斗牛犬

将此添加到我的 xml 配置中并且工作正常:<http pattern="/rest/**" security="none" />然后<http... </http>是标准应用程序的其他配置
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java