Shiro:是否可以在doGetAuthenticationInfo(AuthenticationToken令牌)中获取URL

时间:2017-07-30 17:01:27

标签: rest google-app-engine jersey shiro

我正在尝试使用Google appengine上的Jersey框架创建RESTful Web服务。我正在使用apache shiro进行身份验证。

我们说我有以下情况:

  1. 预先配置了管理员用户,该用户可以创建其他用户,并为每个用户提供离线用户名和密码。
  2. 对于普通用户,有许多REST API。有一个API: #include <vector> //Parent Class class Parent { public: Parent() {}; }; //Child Class class Child : public Parent { public: void childSpecificFunction() {}; }; int main() { //I know for a fact that the item is a child std::vector<Parent> items; items.push_back(Child()); //Static cast to use child specific function doesn't work Child* childPtr = static_cast<Child*>(items[0]); childPtr->childSpecificFunction(); //Gives intellisence error: no suitable conversion from "Parent" to "Child *" exists } 应使用用户名和密码进行身份验证,并返回UserId和令牌作为响应。
  3. 对于所有其他REST API,我希望用于身份验证的凭据是UserId和Token,而不是用户名和密码。
  4. 所以基本上是一种情况,其中用于身份验证的凭据对因API而异。
  5. 我怎样才能在shiro中实现这一目标。根据我的理解,doGetAuthenticationInfo()传递客户端发送的凭据并期望您进行验证,但在这种情况下,我需要知道调用哪个API。那么有没有办法获取URL? 如果没有那么还有什么方法可以实现这个目标?

1 个答案:

答案 0 :(得分:2)

听起来你需要创建一个自定义过滤器,来构建你想要传递给你的领域的令牌类型,看看其中一个默认值作为例子: https://shiro.apache.org/web.html#default-filters