Angular 使用Spring引导从服务器端重定向到角度路由
我的应用程序由两个模块组成:一个角度5Angular 使用Spring引导从服务器端重定向到角度路由,angular,spring-mvc,spring-boot,redirect,angular-routing,Angular,Spring Mvc,Spring Boot,Redirect,Angular Routing,我的应用程序由两个模块组成:一个角度5uimodule和一个弹簧启动座servermodule。我正在使用frontend maven插件构建uimodule,并将其资源文件复制到META-INF/resources文件夹中,以帮助Spring Boot发现它们。因此,这两个模块在同一个域中运行(http://localhost:8080) 现在,我很难实现此工作流的第3点: 1-用户在应用程序中注册(uimodule将用户数据发布到服务器) 2-收到数据后,servermodule通过验证链接
uimodule
和一个弹簧启动座servermodule
。我正在使用frontend maven插件
构建uimodule
,并将其资源文件复制到META-INF/resources
文件夹中,以帮助Spring Boot发现它们。因此,这两个模块在同一个域中运行(http://localhost:8080
)
现在,我很难实现此工作流的第3点:
1-用户在应用程序中注册(uimodule
将用户数据发布到服务器)
2-收到数据后,servermodule
通过验证链接向用户发送验证邮件
3-当用户单击链接时,服务器将验证用户,并将其重定向到登录页面。
/login
路由已存在于ui模块中。现在我的问题是:
如何将用户从服务器端重定向到登录路径
我试过这个,但没有成功:
@Controller
@RequestMapping( "/activate" )
public class ActivationController {
@GetMapping
public String activate() {
return "redirect:/login";
}
}
同一路线(http://localhost:8080/login
)在我单击已定义的登录按钮(在index.html
中)时工作,但在来自服务器或手动写入时不工作(我收到404错误)
救命啊 服务器不知道该url,您必须将其重定向到您的主页,您需要一个映射url的控制器
@RequestMapping(value = "/login")
public String redirect() {
return "index";
}
其中index是您的angular页面我使用相同的设置实现了相同的功能(即angular 8和Spring Boot作为gradle构建的单个应用程序),唯一的区别是我使用的是webflux模块。
经过一些研究,我发现我需要一个UrlBasedViewResolver的实现来处理转发或重定向。因此,我为要配置的ViewResolver包含了“org.springframework.boot:springbootstarter thymeleaf”模块,瞧,它成功了
所以和你一样,在发送邮件后,在用户点击链接验证邮件后,它被重定向到我想要的页面。下面是一个小代码段
@GetMapping(value = "/verify/{email}")
public Mono<String> verify(@PathVariable String email)
{
log.info("Verifying email {}", email);
Subscribe subscribe = new Subscribe();
subscribe.setEmail(email);
subscribe.setVerified(false);
Example<Subscribe> es = Example.of(subscribe);
return this.subscribeRepository.findOne(es)
.doOnSuccess(sub ->
{
log.info("Setting verified to true");
sub.setVerified(true);
this.subscribeRepository.save(sub)
.subscribe();
})
.then(Mono.just("redirect:/verified"))
.onErrorResume(e -> Mono.just("redirect:/error"));
@GetMapping(value=“/verify/{email}”)
公共Mono验证(@PathVariable字符串电子邮件)
{
log.info(“验证电子邮件{}”,电子邮件);
订阅订阅=新订阅();
订阅.setEmail(email);
subscribe.setVerified(false);
示例es=示例of(订阅);
返回此.subscribeRepository.findOne(es)
.doOnSuccess(子->
{
log.info(“设置已验证为真”);
sub.setVerified(真);
this.subscribeRepository.save(sub)
.subscribe();
})
.然后(Mono.just(“重定向:/verified”))
.onErrorResume(e->Mono.just(“重定向:/error”);
我已经有了用于验证和错误的Angular路由。希望这会有所帮助。以及在将用户重定向到主页后我如何将其重定向到登录页面?在Angular中,所有应用程序都在一个页面中,由您决定使用哪种渲染器,您可以使用验证服务来检查您是否登录并提供登录页面