Apache shiro - 如何使用单独的数据库表支持多种用户类型
Apache shiro - How to support multiple user types with individual database tables
我正在使用 Java
/ Spring
/ Apache Shiro
开发一个网络项目,
在 3 个单独的数据库 table 中有 3 种不同的用户类型,2 种用户类型从网页登录,1 种用户类型从手机登录。
我已经实现了一个扩展 AuthorizingRealm
的 Realm
,但我似乎很难提供一个 Restful API 让 3 种用户类型登录.
我目前的想法是:
定义一个扩展UsernamePasswordToken
的新令牌class,并添加一个新字段accountType
,当用户登录时首先检查帐户类型参数,然后决定使用哪个table查询,并使用 accountType
和 username
的组合作为 Principal
.
我的问题是:
- 以上想法行得通吗?或者我应该如何改进它?
- 我应该如何为3个不同的用户定义
loginUrl
,特别是对于移动客户端,它应该是json result
而不是url,对吗?
我已经解决了这个问题。
这是我所做的:
- 实施
UsernamePasswordToken
,并添加一个 accountType 字段。
- 使用
accountType:username
作为校长。需要覆盖相关方法。
- 登录时,用户需要提供
accountType
参数。
- 查询db时,根据accountType,查询不同table.
我正在使用 Java
/ Spring
/ Apache Shiro
开发一个网络项目,
在 3 个单独的数据库 table 中有 3 种不同的用户类型,2 种用户类型从网页登录,1 种用户类型从手机登录。
我已经实现了一个扩展 AuthorizingRealm
的 Realm
,但我似乎很难提供一个 Restful API 让 3 种用户类型登录.
我目前的想法是:
定义一个扩展UsernamePasswordToken
的新令牌class,并添加一个新字段accountType
,当用户登录时首先检查帐户类型参数,然后决定使用哪个table查询,并使用 accountType
和 username
的组合作为 Principal
.
我的问题是:
- 以上想法行得通吗?或者我应该如何改进它?
- 我应该如何为3个不同的用户定义
loginUrl
,特别是对于移动客户端,它应该是json result
而不是url,对吗?
我已经解决了这个问题。
这是我所做的:
- 实施
UsernamePasswordToken
,并添加一个 accountType 字段。 - 使用
accountType:username
作为校长。需要覆盖相关方法。 - 登录时,用户需要提供
accountType
参数。 - 查询db时,根据accountType,查询不同table.