你好吗
我正在使用Java和Spring Boot开发Rest服务,我有一个关于使用javax.validation.验证用户输入的问题
假设我有一个具有name和age属性的用户模型。
假设我有两个endpoint(A和B),在endpointA中,我只需要验证名称,在endpointB中,我只需要验证年龄。
我面临的问题是使用javax。验证我需要验证两个endpoint上的两个属性。有没有办法只验证我需要在特定endpoint中验证的字段?或者以某种方式禁用endpoint中某些属性的验证?
示例
用户公共类用户{
@NotEmpty(message="You need to pass the name parameter")
private String name;
@NotEmpty(message="You need to pass the age parameter")
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
用户RestController
@RestController
@RequestMapping("/v1/user")
public class UserController {
@Autowired
private User _user;
@RequestMapping(value = "/endpoint-a", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public ResponseEntity<?> doPostEndpointA(@Valid @RequestBody User user) {
// only validate the user name
}
@RequestMapping(value = "/endpoint-b", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public ResponseEntity<?> doPostEndpointB(@Valid @RequestBody User user) {
// only validate the user age
}
}
通过将验证放在域类上,无论调用什么endpoint,都将执行验证。
如果每个终端需要不同的验证,将该逻辑放入控制器并将其从域类中删除。如果您需要保留域类的验证并且每个终端只验证一个字段,也许默认值可以为您解决这个问题。
问题内容: 我正在开发一个使用Jersey框架的REST应用程序。我想知道如何控制用户身份验证。我搜索了很多地方,最近的文章是:http : //weblogs.java.net/blog/2008/03/07/authentication- jersey 。 但是,本文只能与GlassFish服务器和附加数据库一起使用。无论如何,在到达请求的REST资源之前,我是否可以在Jersey中实现一个接
我正在编写一个程序,用于验证通过HTTP POST发送的用户名和密码,并根据ldap进行验证,无论验证是否成功,都将响应发送回用户。 我的Websecurity配置器实现 我的测试服务器.ldif
我们的项目由Java后端(spring web应用程序)以及iOS和Android客户端应用程序组成。现在我们需要向Java后端添加客户端应用程序的身份验证。其想法是首次使用外部web服务注册用户。在这一步中,用户提供完整的凭证(登录和“大”密码),并选择一些PIN进行进一步授权。在这个主要步骤成功完成后,用户应该能够使用他的登录名和PIN(他之前自己选择的)进行身份验证。这些登录名和pin应该存
使用用户证书验证 SSH (服务端) 在以安全为前提下要保障可靠性、可控性和一致性是非常复杂的。我们可以利用 SSH 又或者说 OpenSSH 来替代所依赖的中央身份验证(比如 LDAP 或者 Kerberos) 除了 通过 PIV 和 PKCS#11 验证 SSH 之外,还可以增加远程 SSH 验证的安全性。Facebook 和 Yahoo 已经更换使用 SSH 用户证书来避免中心认证系统宕机。
我很难想出如何正确使用扫描仪来验证用户输入。例如,程序需要用户输入int,用户只能输入正数,如果用户输入“apple”、“delicious apple”或负数,问题将显示错误消息。我尝试了下面的代码,然后我发现了一个令人不安的问题,“那不是一个数字!”我不知道是什么引起了这些问题。。。。 我在“number=sc.nextInt()”下面加了一行代码,意外地解决了这个问题,现在我的代码变成: 这
我有一个DTO,它在控制器层通过BeanValidation(javax.validation)和定制验证器(org.springframework.validation.Validator)的组合进行验证。通过这种方式,我可以检查提供的输入是否有效,然后转换实体中的DTO并将其转发到服务层。 然后是业务逻辑验证。例如:@Entity用户的startDate必须在某个事件发生之后,如果最后创建的用