在Spring Data Mongodb环境中如何基于不同的用户访问不同的数据库?

问题描述

在我当前的实现中,MongoDB架构看起来像

DB : schoola
Collections : 
 1. students
 2. users
DB : schoolb
Collections : 
 1. students
 2. users

然后在Spring服务器属性文件的每个实例中-

SPRING_DATA_MONGODB_DATABASE: <dbname>
SPRING_DATA_MONGODB_URI: <URI to <dbname>>

很显然,这是不可扩展的,我已经厌倦了维护其他服务器实例。 相反,我要寻找的是一个 用户数据库

DB : user
Collections :
 1. users (with fields {userName,password,associatedWith: <DB NAME OF THE SCHOOL USER IS ASSOCIATED WITH>)

那我该怎么做? 当用户尝试登录时,我尝试使用 user / users 进行验证,如果成功,则获取 associatedWith 值。 然后,我连接到该数据库并为该用户提供服务,同样,我也不必每次进行Rest调用都连接到mongodb,可能我需要在内存中维护一个userContext。

解决方法

一种方法是提供自己的MongoDatabaseFactory风格,在getMongoDatabase()上从上下文源读取 tenant 并返回{{ 1}}。

This sample有点过时,但给人的总体印象是这里。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...