回答问题 1
在 Play 中,您可以按名称获取数据源:
def getDataSource(name: String): DataSource
您必须对包中的内容进行大量黑客攻击play.api.db
才能获得所需的功能。
那,或者如果您的应用程序的用户数量很少,您可以预定义一堆数据源,并通过他们的登录名检索连接,例如:
db.bob.url="jdbc:h2:mem:db_for_bob"
db.bob.driver=org.h2.Driver
db.alice.url="jdbc:h2:mem:db_for_alice"
db.alice.driver=org.h2.Driver
和
DB.withConnection("bob") { implicit connection =>
或者
DB.withConnection(userNameKnownAtRuntime) { implicit connection =>
回答问题 2
即使会话中的数据使用应用程序机密进行了高度加密,我还是建议不要在客户端存储这些数据。相反,根据OAuth 2 规范中的本节实施资源所有者密码凭据授予的内容。这将为您的客户提供一个仅在一段时间内有效的令牌,如果需要,可以在服务器端无效。