gpt4 book ai didi

java - 如何从 Spring Boot 重定向/转发 Angular 页面?

转载 作者:行者123 更新时间:2023-12-02 16:35:22 27 4
gpt4 key购买 nike

我正在开发一个应用程序,以 Angular 6 作为前端,以 Spring Boot 作为后端。在实现用户身份验证模块时,我想在登录后相应地重定向到学生和教职员工的家。

但是,我无法从 Spring Boot 重定向页面。使用Redirect to an external URL from controller action in Spring MVC这个解决方案我收到 CORS 错误:“预检响应中的 Access-Control-Allow-Headers 不允许请求 header 字段内容类型。”

或者,是否有其他方法可以完成此任务?

AuthenticationController.java

package sgsits.cse.dis.user.controller;

@CrossOrigin(origins = "*") // enables cross origin request
@RestController
@RequestMapping(value = "/dis")
@Api(value = "Authentication Resource")
public class AuthenticationController {

@Autowired
StudentRepository studRepo;
@Autowired
StaffRepository staffRepo;
@Autowired
EmailController email;

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

@ApiOperation(value = "login", response = Object.class, httpMethod = "POST", produces = "application/json")
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestBody Authentication auth, HttpServletResponse httpServletResponse) {
Optional<StaffProfile> staff = staffRepo.findByEmail(auth.getUsername());
if (staff.isPresent()) {
String md5_pass = MD5.getHash(auth.getPassword());
if (staff.get().getPassword().equals(md5_pass)) {
// set session
// update last login

return "forward:/localhost:4200/staff";
} else

return "You have entered incorrect password";
} else {
Optional<StudentProfile> student = studRepo.findByEnrollmentId(auth.getUsername());
if (student.isPresent()) {
String md5_pass = MD5.getHash(auth.getPassword());
if (student.get().getPassword().equals(md5_pass)) {
// set session
// update last login

httpServletResponse.setHeader("Location", "http://localhost:4200/reset-password");
httpServletResponse.setStatus(302);
return "redirect:localhost:4200/student";

} else
return "You have entered incorrect password";
} else {
return "You are not registered with the system. Please signup first";
}
}
}
}

最佳答案

不要向 Controller 添加@CrossOrigin(origins = "*")注释。

假设您的 api 在 8080 上运行,而您的 Angular 代码在 4200 上运行。如果为 true;

创建一个名为 proxy.conf.json 的文件

{
"/api/": {
"target": "http://localhost:8080/",
"secure": false,
"changeOrigin": true
}

使用此命令启动 Angular 应用程序

ng服务--proxy-config proxy.conf.json

使用此配置,当您调用 localhost:4200/api 时,它将调用 8080 并且不会出现任何 CORS 错误

关于java - 如何从 Spring Boot 重定向/转发 Angular 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069488/

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