Apache shiro - 如何使用单独的数据库表支持多种用户类型

Apache shiro - How to support multiple user types with individual database tables

我正在使用 Java / Spring / Apache Shiro 开发一个网络项目, 在 3 个单独的数据库 table 中有 3 种不同的用户类型,2 种用户类型从网页登录,1 种用户类型从手机登录。

我已经实现了一个扩展 AuthorizingRealmRealm,但我似乎很难提供一个 Restful API 让 3 种用户类型登录.

我目前的想法是:

定义一个扩展UsernamePasswordToken的新令牌class,并添加一个新字段accountType,当用户登录时首先检查帐户类型参数,然后决定使用哪个table查询,并使用 accountTypeusername 的组合作为 Principal.

我的问题是:

  1. 以上想法行得通吗?或者我应该如何改进它?
  2. 我应该如何为3个不同的用户定义loginUrl,特别是对于移动客户端,它应该是json result而不是url,对吗?

我已经解决了这个问题。

这是我所做的:

  • 实施 UsernamePasswordToken,并添加一个 accountType 字段。
  • 使用accountType:username作为校长。需要覆盖相关方法。
  • 登录时,用户需要提供accountType参数。
  • 查询db时,根据accountType,查询不同table.