Как сделать AJAX POST CALL без отключения crsf на Oauth с помощью Spring Boot - PullRequest
0 голосов
/ 31 января 2020

это файл конфигурации аутентификации со стороны клиента.

@Configuration
@EnableOAuth2Sso
public class OauthConfig extends WebSecurityConfigurerAdapter{

    @Value("${winni.auth.exit}")
    private String authExit;

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/**")
          .authorizeRequests()
          .antMatchers("/", "/login**")
          .permitAll()
          .anyRequest()
          .authenticated()
          .and()
          .logout().logoutSuccessUrl(authExit);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/assets/**","/application.properties");
    }
}

это код ajax, который отправляет запрос к контроллеру пружины

$('#saveHtmlTemplate').on('click', function () {
        updateHtmlTemplate();
    });
    function updateHtmlTemplate() {
        var uri = contextPathUri + 'template/xhr/save';
        var templateId = $('#templateId').val();
        var htmlData = $('#hiddenContent').val();
        var jqxhr = $.ajax({
            url: uri,
            type: "POST",
            cache: false,
            dataType: "json",
            data: {
                templateId: templateId,
                html: htmlData
            }
        });
        jqxhr.done(function (response) {
            if (response.success == "true") {
                alert("Updated template successfully");
                location.reload();
            } else {
                alert(response.message);
            }
        });
        jqxhr.fail(function (data) {
            alert("Server error encountered");
        });
        jqxhr.always(function (data) {
        });
    }

Контроллер пружины для указанного выше запроса

@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json"})
    @ResponseBody
    public Map<String, String> saveTemplate(@RequestParam Map<String, String> parameters, HttpServletRequest request) {

        Map<String, String> resp = new HashMap<>();
        EmailTemplate emailTemplate = emailTemplateService.getEmailTemplateById(Long.valueOf(parameters.get("templateId")));
        emailTemplate.setViewTemplate(parameters.get("html"));
        emailTemplateService.saveEmailTemplate(emailTemplate);
        resp.put("success", "true");
        return resp;
    }

, когда я использую crsf.disable в файле конфигурации OauthConfig, тогда ajax отлично поразил мой контроллер ... без этого я получил ошибку 403 .. как я решаю свою проблему, не отключая crsf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...