我是JWT的新手.网上没有太多的信息,因为我作为最后的手段来到这里.我已经使用spring会话使用spring security开发了一个spring boot应用程序.现在我们将转向JWT而不是春季会议.我找到了很少的链接,现在我可以验证用户并生成令牌.现在困难的部分是,我想创建一个过滤器,它将验证对服务器的每个请求,
我将 spring security 与 Websocket 一起使用,我有以下方法,
@PreAuthorize("hasAuthority('ROLE_CREATE_USER')")
@MessageMapping("/cashDeposit")
public void cashDeposit(CashDepositRequest cashDepositRequest) {
Run Code Online (Sandbox Code Playgroud)
我有 websocket 安全配置。现在的问题是,当访问被拒绝时,它会抛出异常,
org.springframework.security.access.AccessDeniedException: Access is denied
at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:84) ~[spring-security-core-4.1.1.RELEASE.jar:4.1.1.RELEASE]
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:233) ~[spring-security-core-4.1.1.RELEASE.jar:4.1.1.RELEASE]
Run Code Online (Sandbox Code Playgroud)
我搜索了 Stackoverflow,发现大多数问题都与 Servlet(HTTPServletRequest/Response)相关,而不是与 Websocket 相关。
请让我知道如何处理 websocket 的 AccessDeniedException 以及如何向用户发送 403 禁止的 websocket 消息。
我的安全配置
@Configuration
public class WebSocketSecurityConfig extends
AbstractSecurityWebSocketMessageBrokerConfigurer {
@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
messages.simpMessageDestMatchers("/topic/**").permitAll()
.anyMessage().authenticated();
}
@Override
protected boolean sameOriginDisabled() {
//disable CSRF for websockets for now...
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我的其余服务的安全配置,
@Override
protected void configure(HttpSecurity http) throws …Run Code Online (Sandbox Code Playgroud) 我已经配置了一个 kafka 连接 Mongodb 接收器,我想通过实现一些自定义逻辑来转换消息。
Kafka connect 是否仅限于内置 SMT(或者)是否可以编写自定义 SMT。如果不是,我怎样才能实现这一目标?通过溪流?
我在 Kafka Streams 应用程序中使用以下 JSON 配置,
properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
GenericJSONSerde.class);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
com.buy.json.JsonSerializer.class);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
com.buy.json.JsonDeserializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
com.buy.json.JsonSerializer.class);
Run Code Online (Sandbox Code Playgroud)
为了衡量性能,我删除了所有逻辑以及从 IN 主题收到的所有内容,我只是将其推送到 OUT 主题。处理35万条记录需要3分钟
但当我使用 AVRO 时,同一个流应用程序只需 1 分钟即可处理 300 万条记录。这是我的 AVRO 配置,
`properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
GenericAvroSerde.class);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroSerializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroSerializer.class);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroDeserializer.class);
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroDeserializer.class);`
Run Code Online (Sandbox Code Playgroud)
我正在编写的流应用程序应该支持 AVRO/JSON。我将在启动流应用程序时决定这一点。
我的问题是:在 Streams 应用程序中使用 JSON 会影响性能吗?请澄清。
我遇到了以下问题:我有一个超过1,000,000,000个数据的表.现在我运行以下查询(acc_no是主键):
select acc_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)
上述查询在不到一秒的时间内运行并获取了100,000条记录
但是如果我在同一个查询中再添加一列("service_no"),
select acc_no,service_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)
..这花了一分多钟.这是为什么?为什么第一个查询花了不到一秒钟,第二个查询花了不到一分钟?
仅供参考:service_no是一个NUMBER列