Java webflux如何将当前登录单字符串传递给flux
我对Spring boot Webflux还是新手。我使用Casssandra作为我的数据库,下面我有一个friends表,我想根据我的登录ID获取我的所有朋友。如何获取当前登录ID并将ID传递给fluxJava webflux如何将当前登录单字符串传递给flux,java,reactive-programming,spring-webflux,project-reactor,spring-data-cassandra,Java,Reactive Programming,Spring Webflux,Project Reactor,Spring Data Cassandra,我对Spring boot Webflux还是新手。我使用Casssandra作为我的数据库,下面我有一个friends表,我想根据我的登录ID获取我的所有朋友。如何获取当前登录ID并将ID传递给flux // Here i retrieved currently login user ID which is a mono string public Mono<String> getUserID(Mono<String> principal) { return pr
// Here i retrieved currently login user ID which is a mono string
public Mono<String> getUserID(Mono<String> principal) {
return principal
.map(Principal::getName)
}
//这里我检索了当前登录用户ID,它是一个单字符串
公共Mono getUserID(Mono主体){
返回本金
.map(主体::getName)
}
或
公共静态Mono getUserIDFromRequest(服务器请求){
返回请求。主体()
.cast(UsernamePasswordAuthenticationToken.class)
.map(UsernamePasswordAuthenticationToken::getName);
}
//我朋友的桌子
公课朋友{
@PrimaryKey(“用户ID”)
私有长用户ID;
私人长friendId;
私有FriendObject-FriendObject;
私人串自;
私有布尔启用通知;
私有布尔allowMessages;
//接球手和接球手
}
@存储库
公共接口FriendsRepository扩展了ReactiveCassandraRepository{
}
@服务
公共类FriendserviceImpl实现Friendservice{
@凌驾
公共好友(好友){
return friendsRepository.保存(friends);
}
}
公共类友谊处理程序{
//如何将登录Mono传递给此通量,或者如何将Mono和通量结合起来?
@GetMapping(path=“/friends/list”,products=MediaType.TEXT\u EVENT\u STREAM\u VALUE)
Flux getFriends(Mono principal){
return friendshipService.getFriends(Long.valueOf(“登录ID”));
}
或
公共Mono getFriends(服务器请求){
返回ok()(
友谊服务
.getFriends(Long.valueOf(“登录ID”))、Friends.class);
}
}
这是基本的webflux,如果你不能做到这一点,你需要仔细阅读
@GetMapping(path="/friends", produces=MediaType.TEXT_EVENT_STREAM_VALUE)
Flux<Friends> getFriends(Mono<Principal> principal) {
return principal.map(principal -> {
return // Here you do what you need to with the principal
});
}
@GetMapping(path=“/friends”,products=MediaType.TEXT\u EVENT\u STREAM\u VALUE)
Flux getFriends(Mono principal){
返回principal.map(principal->{
return//在这里,您可以对委托人做您需要做的事情
});
}
请阅读您是想返回mono还是flux?我想返回flux,但我需要将登录ID作为参数传递这是一个关于如何在Spring数据Jpa中动态使用凭据的问题,不是关于反应式服务的问题。@K.Nicholas我的问题是关于使用Cassandra作为数据库的spring boot webflux。您还可以从WebFlux获取登录用户凭据。记住,我正在返回一个flux。return friendshipService.getFriends(Long.valueOf(principal.getName());Principal是一个mono,所以我得到一个错误,说类型不匹配:无法从mono转换为Flux
@GetMapping(path="/friends", produces=MediaType.TEXT_EVENT_STREAM_VALUE)
Flux<Friends> getFriends(Mono<Principal> principal) {
return principal.map(principal -> {
return // Here you do what you need to with the principal
});
}