java - 没有spring security的spring boot中是否有任何安全模块
问题描述
我正在使用 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中是否有任何内部模块如何启用安全性,请参阅我以前的帖子
先感谢您。
解决方案
答案是通过在 Web 服务中添加@CrossOrigin注释来管理服务器端的 CORS ,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;
}
}
}
推荐阅读
- sql - 如何在 SQL 中获取匹配的行并插入到多个表中
- elasticsearch - 按分数组合查询和排序结果
- github - 如何在身份验证代理服务器后面使用 IntelliJ 配置 git clone
- ios - 在 UITableview 的情况下删除不起作用
- java - 未找到类型返回值的转换器:类 java.util.ArrayList (Spring Boot)
- java - 如何在 Android 中获取 simCard 号码
- ios - APNS 推送通知延迟
- docker - 如何在 docker-compose 中自定义 Payara 图像
- python - 在 Python 中删除元音运行
- linux-kernel - 降级 Linux 内核版本