我根据 vaadin 文档中的描述配置并测试了视图的一般安全功能:https://vaadin.com/docs/latest/security/enabling-security
我用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
并将
@PermitAll
添加到我的视图之一,用户被迫登录。
我要求的是以下场景:
我希望无需登录即可查看(安全),因此我添加了
@AnonymousAllowed
。效果很好,无需登录。在此视图中,我打开一个对话框(dialog.open())。我希望这个对话框是安全的,这样如果用户想要查看对话框的内容,就必须登录。尝试将 @PermitAll
添加到对话框中,但没有改变任何内容。我假设该对话框是在我添加 @AnonymousAllowed
的视图上下文中打开的,因为它不是一个单独的视图,只是一个对话框。他们有什么办法强制对话框要求登录吗?也许,在打开对话框之前从任何 vaadin / spring 安全类调用“doLoginNow”方法?
在 Vaadin 论坛中询问,根据文档尝试了不同的方法,例如
@PermitAll
或使用 AuthenticationContext
,但这不起作用,或者只是提供有关上下文信息的方法。
检查用户是否通过 AuthenticationContext 进行身份验证。如果没有,请使用 UI.getCurrent().getPage().setLocation("securedPage"); 重定向到 @PermittAll 视图