【问题标题】:are there any security modules in spring boot without spring security没有spring security的spring boot中是否有任何安全模块
【发布时间】:2018-11-01 08:48:11
【问题描述】:

我使用的是 Spring Boot 版本(2.0.1),我遇到了安全问题,所以当我尝试使用这样的 ajax 发出请求时:

$.ajax({
    url : "http://localhost:8080/utilisateurs/addUser",
    headers: { 
             'Accept': 'application/json',
             'Content-Type': 'application/json' 
            },
    type : "POST",
    data : user,
    dataType : "application/json"
}

我收到一个 HTTP 错误 403,我知道这个错误的含义(用户可以登录服务器但没有正确的权限)但问题是我没有使用任何安全模块是我的依赖 pom.xml 文件:

<dependencies>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!--<dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>-->
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency> 
         <groupId>org.springframework.data</groupId>
         <artifactId>spring-data-rest-hal-browser</artifactId>
    </dependency>
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <scope>runtime</scope>
    </dependency>
    <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
    </dependency>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
    </dependency>
    <dependency>
         <groupId>org.springframework.boot</groupId> 
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
    </dependency>
 </dependencies>

那么谁可以阻止请求,spring boot中有没有内部模块如何启用安全性, 见my previous post

提前谢谢你。

【问题讨论】:

  • 该脚本在哪里?它是否来自您的应用程序?
  • 谢谢@MarkoPacak,是的,如果你看到我以前的帖子,你会看到网络服务的代码。
  • 在我看来您被 CORS 过滤器阻止了,这意味着该脚本位于您的应用程序之外。但也许我错了……
  • @MarkoPacak 在这种情况下我能做什么??
  • 你应该首先了解CORS是什么,以及为什么会触发OPTION飞行前请求以及为什么会发生这一切。正如我所说,我最好的猜测是您的 Web 资源位于 Web 应用程序之外,因此您的服务器不信任它(谢天谢地)。与其删除 CORS 过滤器,不如整合应用程序提供的资源(js、css、...)。与有人在另一个问题中指出的相反,CSRF 与这里无关

标签: java spring spring-boot


【解决方案1】:

答案是管理服务器端的 CORS,在 web 服务中添加 @CrossOrigin 注释,web 服务变成这样:

package com.sid.webService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.sid.dao.entity.Utilisateur;
import com.sid.metier.IMetierUtilisateur;

@Component
@RestController
@RequestMapping("/utilisateurs")
public class webServiceUtilisateur {

@Autowired
private IMetierUtilisateur mr;

@CrossOrigin
@RequestMapping(value="/addUser",method=RequestMethod.POST)
public boolean addUser(@RequestBody Utilisateur u)
{
    try
    {
        mr.ajouterUtilisateur(u);
        return true;
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
        return false;
    }   
  } 
}

如果您想要更多自定义,请添加您将要从中访问 Spring 后端的所有域,并将它们放在属性源中,如下所示:

@CrossOrigin(origins="http://localhost:8080/utilisateurs/")
@RequestMapping(value="/addUser",method=RequestMethod.POST)
public boolean addUser(@RequestBody Utilisateur u)
{
    try
    {
        mr.ajouterUtilisateur(u);
        return true;
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
        return false;
    }   
  } 
}

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2018-10-25
    • 2010-12-10
    • 2020-05-11
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多