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

时间:2015-04-24 04:24:37

标签: java spring authentication shiro

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

我已经实现了扩展Realm的{​​{1}},但我似乎很难提供一个Restful API来让3个用户类型登录。

我目前的想法是:

定义扩展AuthorizingRealm的新令牌类,并添加新字段UsernamePasswordToken,当用户首先检查帐户类型参数时,然后决定要查询的表,并使用{{1的组合}和accountTypeaccountType

我的问题是:

  1. 上述想法会起作用吗?或者我应该如何改进呢?
  2. 我应该如何为3个不同的用户定义username,特别是对于移动客户端,它应该是除网址之外的Principal,对吗?

1 个答案:

答案 0 :(得分:1)

我有点解决了这个问题。

这是我做的:

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