我在spring上设置了一个stomp websocket,并通过@MessageMapping
注释定义了端点。
我已经读过@PreAuthorize
可以用于在每个映射的基础上进行授权,但这似乎不起作用。使用@PreAuthorize
时,如果用户不在特定角色,则不会拒绝请求。
@PreAuthorize("hasRole('ROLE_ADMIN')")
@MessageMapping(value="/addComment/{ID}")
public void addComment(@DestinationVariable Integer ID, String content, Principal principal)
throws Exception {
//Do stuff with ID,content etc
}
我目前的设置是这样的
@Configuration
public class WebSocketSecurityConfig extends
AbstractSecurityWebSocketMessageBrokerConfigurer {
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
messages
.simpDestMatchers("/put/addComment/**").hasRole("ADMIN");
}
}
虽然我更愿意对每个映射进行注释,因为它对我来说更清楚。
可以预先授权与映射一起使用吗?
如果是这样,有理由说它不能在上面的例子中工作吗?
如果没有,有没有办法按映射而不是在configurer中执行此操作?
使用Spring 4
需要更多信息让我知道