Java webflux如何将当前登录单字符串传递给flux

Java 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

我对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 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
    });
}