我遵循以下教程:使用 WebSocket 构建交互式 Web 应用程序
一切都按照描述进行,并且应用程序看起来很好。我只有一个很好的控制器:
@Controller
public class GreetingController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
}
}
Run Code Online (Sandbox Code Playgroud)
还有一点配置。
现在我想为这个简单的应用程序添加安全性。我花了时间找例子,但找不到。
一般来说,我找到了教程:
预览 Spring Security WebSocket 支持
但看起来这个例子只与 spring 4 相关,而不是 spring 5。而且我不明白我应该在哪里提供凭据等。描述不够详细,无法应用于我的示例。
我发现了另外一个教程: Websocket Authentication and Authorization in Spring Ask
它看起来更清晰,但我不确定它是目前最好的解决方案。
您能建议为我的应用程序配置 spring security 的最简单方法吗?
PS我还发现了不一样但熟悉的问题How to secure websocket application [Spring boot + STOMP],但目前没有答案。
现在我有以下配置:
@Configuration
@EnableWebSocketMessageBroker
public …
Run Code Online (Sandbox Code Playgroud) 我现在正在尝试学习 Spring Security,并且我已经看到许多使用它的不同示例。我知道 CSRF 是什么,并且 Spring Security 默认启用它。我很想知道的是这种定制。
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.and()
.authorizeRequests(request -> {
request
.antMatchers("/login").permitAll()
.anyRequest()
....more code
Run Code Online (Sandbox Code Playgroud)
这.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
条线做了什么样的定制,什么时候适合使用。如果有人能提供一个简单的解释,我将不胜感激。