Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest Shiro:可以在DogeAuthenticationInfo(AuthenticationToken token)中获取URL吗_Rest_Google App Engine_Jersey_Shiro - Fatal编程技术网

Rest Shiro:可以在DogeAuthenticationInfo(AuthenticationToken token)中获取URL吗

Rest Shiro:可以在DogeAuthenticationInfo(AuthenticationToken token)中获取URL吗,rest,google-app-engine,jersey,shiro,Rest,Google App Engine,Jersey,Shiro,我正在尝试使用google appengine上的Jersey框架创建一个RESTful web服务。我正在使用ApacheShiro进行身份验证 假设我有以下场景: 有一个预先配置的管理员用户,该用户创建其他用户,并向这些用户中的每一个脱机提供用户名和密码 对于普通用户,有许多RESTAPI。有一个API: GET/tokenInfo应使用用户名和密码进行身份验证,并返回用户名和令牌作为响应 对于所有其他RESTAPI,我希望用于身份验证的凭据是用户ID和令牌,而不是用户名和密码 因此,基本上

我正在尝试使用google appengine上的Jersey框架创建一个RESTful web服务。我正在使用ApacheShiro进行身份验证

假设我有以下场景:

  • 有一个预先配置的管理员用户,该用户创建其他用户,并向这些用户中的每一个脱机提供用户名和密码
  • 对于普通用户,有许多RESTAPI。有一个API:
    GET/tokenInfo
    应使用用户名和密码进行身份验证,并返回用户名和令牌作为响应
  • 对于所有其他RESTAPI,我希望用于身份验证的凭据是用户ID和令牌,而不是用户名和密码
  • 因此,基本上这是一个用于身份验证的凭证对根据API而变化的场景
  • 我怎样才能在shiro做到这一点。据我所知,doGetAuthenticationInfo()传递客户端发送的凭据,并希望您进行验证,但在本例中,我需要知道调用了哪个API。那么有没有办法获取URL?
    如果没有,那么还有什么其他方法可以实现这一点呢?

    听起来您需要创建一个自定义过滤器,要构建您想要传递到您的领域的令牌类型,请查看其中一个默认值作为示例:

    对不起,我不明白。什么是“构建您想要传递的令牌类型”,如果我理解正确,传递的令牌是请求中接收到的凭证对。再次澄清我的问题:我基本上有两组凭证对:1。用户名(字符串/长):密码(字符串)或2。UserId(Long):令牌(String)对于一组API,我想使用凭证对#1,对于另一组API,我想使用凭证对#2。因此,当我收到一个带有一些凭据的请求时,在不知道URL的情况下,我如何知道要对哪一对进行身份验证?好的,我想我现在知道了。我创建了一个自定义过滤器,它扩展了“BasicHttpAuthenticationFilter”。因为我重写了“createToken()”,所以方法及其返回的对象也具有URL。这样,我就可以在“doGetAuthenticationInfo()函数”中获取URL。