gpt4 book ai didi

java - mongodb + Spring 启动。如何进行广泛过滤?

转载 作者:行者123 更新时间:2023-12-01 23:23:46 26 4
gpt4 key购买 nike

我的account.java是这个

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@Document(collection="Account")
public class Account {
@Id
private String id;
private String username;
private String password;
private String role;
}

我的仓库是这个

import org.springframework.data.mongodb.repository.MongoRepository;
public interface AccountRepository extends MongoRepository<Account, Integer> {

}
最后。对于我的 Controller (尚未完成)

@PutMapping("/createAccount")
public void createAccount(@RequestBody Account account) {

}

我想要以下内容,

如果我要在请求正文中发送 json,例如

{
"username": "Tom",
"password": "123456",
"role": "Employee"
}

然后它将在 Account 集合中创建一个具有该属性的对象,这可以通过repository.insert(account)轻松完成。但是我需要检查某些过滤器

  1. 需要设置所有 3 个对象
  2. 角色必须是“员工”、“管理员”或“客户”
  3. 最后,用户尚未在数据库中

否则发送响应 400

如何使用 springboot 实现此目的?

最佳答案

  1. 您可以在 Controller 中使用@Valid Annotation,然后您可以将@NotNull或@NotEmpty或@NotBlank放入您的模型类中。引用:https://www.baeldung.com/spring-boot-bean-validation

public void createAccount(@Valid @RequestBody Account 帐户) {

}

public class Account {

@Id
@NotNull
private String id;
@NotNull
private String username;
@NotNull
private String password;
@NotNull
private String role;
}
  • 您可以使用 Spring Security 表达式。引用:https://www.baeldung.com/spring-security-expressions-basic

    @PreAuthorize("hasRole('ROLE_ADMIN')")

    @PutMapping("/createAccount")

    public void createAccount(@RequestBody Account 帐户){

    }

  • 关于java - mongodb + Spring 启动。如何进行广泛过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58316129/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com