gpt4 book ai didi

java - 获取身份验证以在 Tomcat 上使用 Spring Boot

转载 作者:行者123 更新时间:2023-11-28 22:29:54 24 4
gpt4 key购买 nike

我正在尝试让 spring-boot-starter-securityspring-boot-starter-webspring-boot-starter- 一起工作 Tomcat 。我尝试按照 spring-boot-sample-secure 中的指南进行操作和 spring-boot-sample-web-secure但是我没有让它工作。

我正在尝试构建一个没有任何 UI 交互的 REST 应用程序。因此我发现这两个样本都不完全适合我的目的。目前我的解决方案是使用 AOP。

ControllerMonitor.java :

@Before("execution(* my.zin.rashidi.openshift.tomcat.controller.*.*(..)) && args(authorization, ..)")
public void authenticate(String authorization) {

if (!isEmpty(authorization)) {
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken("user", "N/A",
AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_USER"))
);
}
}

UserController.java :

@RequestMapping(method = GET)
public ResponseEntity<User> get(@RequestHeader String authorization, @RequestBody User user) {
HttpStatus status = OK;
User returnObject = null;

try {
returnObject = service.get(user);
} catch (AuthenticationCredentialsNotFoundException e) {
status = UNAUTHORIZED;
}

return new ResponseEntity<User>(returnObject, status);
}

解决方案对我有用。但是我想知道这是否是一个好的解决方案。我很好奇是否有更好的解决方案。

非常感谢您的帮助!

最佳答案

我不想为每个 Controller 方法添加一个可选参数,因为它是可选的,所以遗忘的风险非常高。您征求了意见,我认为更好的解决方案是使用带有过滤器的更正常的 Spring Security 方法(如果足够好,则为标准基本身份验证,或者可能是像预授权这样的自定义过滤器,例如,如果它没有'满足您的需求)。您可以在 Spring Boot 应用程序中获得开箱即用的 http 基本安全性,因此您实际上根本不需要做任何事情就可以开始。

关于java - 获取身份验证以在 Tomcat 上使用 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24841894/

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