我從Manning - Spring Microservice in Action開始學習 Spring Cloud 微服務,以及如何在我的 spring 應用程式中使用 Keycloak。但是在過去的幾天里我不能再進一步了......我成功創建了keycloak docker容器,連接到docker compose中的mysql容器,我們的spring應用程式的表格是在mysql db中創建的,但是當我試圖發布時在 db 上,我得到HTTP ERROR 403: FORBIDDEN,每次,我都用角色撰寫簡單的測驗,看看我是否可以訪問一個簡單的字串輸出并且它有效,但不是為 mysql db 發布,我不知道為什么。我激活了 Keycloack 容器的日志......沒有任何問題,我唯一得到的是來自 mysql 容器:mbind:不允許操作,但如果它與此相關,則為 idk。下面我顯示我的配置,請幫助我!
@RestController
@RequestMapping(value = "/facultate")
public class FacultateController {
private FacultateService facultateService;
public FacultateController(FacultateService facultateService) {
this.facultateService = facultateService;
}
//forbidden
@RolesAllowed({"USER", "ADMIN"})
@PostMapping(value = "/post")
public ResponseEntity postFacultate(@RequestBody Facultate facultate) {
facultateService.save(facultate);
return new ResponseEntity(HttpStatus.CREATED);
}
//forbidden
@RolesAllowed("ADMIN")
@PostMapping(value = "/")
public String save(@RequestBody Facultate facultate)
{
facultateService.save(facultate);
return "da";
}
//forbidden
@PostMapping(value = "/create")
public String create(@RequestBody Facultate facultate)
{
facultateService.save(facultate);
return "da";
}
//forbidden
@GetMapping(value = "/{facultateNameId}")
public ResponseEntity<Facultate> findById(@PathVariable("facultateNameId") String facultateNameId)
{
return new ResponseEntity<>(facultateService.getById(facultateNameId), HttpStatus.ACCEPTED);
}
//work
@RolesAllowed("USER")
@GetMapping(value = "/hi")
public String sal()
{
return "merge";
}
//work
@RolesAllowed({"USER", "ADMIN"})
@GetMapping(value = "/test")
public String test()
{
return "merge";
}
//work
@RolesAllowed({"ADMIN" , "USER"})
@GetMapping(value = "/test2")
public String test2()
{
return "merge";
}
//work
@RolesAllowed("ADMIN")
@GetMapping(value = "/test3")
public String test3()
{
return "merge";
}
- 它適用于除了發布方法之外的所有內容,不關心我是否與角色一起使用,是否經過身份驗證,是否經過授權,對資料庫不起作用
碼頭工人撰寫檔案:
version: '3'
services:
keycloak:
image: jboss/keycloak
restart: always
environment:
DB_VENDOR: MYSQL
DB_ADDR: database
DB_DATABASE: petrea
DB_USER: root
DB_PASSWORD: ravage123
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
KEYCLOAK_LOGLEVEL: DEBUG
JDBC_PARAMS: "connectTimeout=30000"
ports:
- "8080:8080"
depends_on:
- database
database:
image: mysql:8.0
container_name: database
restart: always
ports:
- 3306:3306
environment:
MYSQL_DATABASE: petrea
MYSQL_ROOT_PASSWORD: ravage123
MYSQL_ROOT_USER: root
如果你想讓其他人看到,請說
uj5u.com熱心網友回復:
您是否正確設定了 CORS?必須允許請求的源這樣做。在 CORS 上查看此視頻。在 Rest Application 的主類中,有一個addCorsMappings可以覆寫的方法。將映射添加到 CorsRegistry。這些應該是您希望從中呼叫 REST 應用程式的域。
uj5u.com熱心網友回復:
這是因為 @harvanchik 所說的 Cors。我的解決方案取自:如何在 Spring Boot Spring Security 應用程式中配置 CORS?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/419728.html
標籤:
下一篇:SQL查詢以明智地獲取凈利潤股票
