代码之家  ›  专栏  ›  技术社区  ›  user1156544

通过getAuthenticationInfo进行身份验证后的空白页

  •  0
  • user1156544  · 技术社区  · 7 年前

    我已经创建了一个Shiro领域,用于x509证书 this extension

    The“ protected X509AuthenticationInfo doGetX509AuthenticationInfo(X509AuthenticationToken token) “执行方法(即。 getAuthenticationInfo(token) ),验证我的用户并似乎执行 return X509AuthenticationInfo

    然而,在那之后,页面保持空白!它不会重定向到任何地方。如果我改用“anon”或基本身份验证,则我的页面将正确显示(以验证页面不应为空)。会发生什么?

    shiro.ini公司

    [main]
    x509Realm = com.flowersforyou.shiro.myRealm
    securityManager.realms = $x509Realm
    
    x509 = org.apache.shiro.web.filter.authc.X509AuthenticationFilter
    
    [urls]
    /** = x509
    

    我试着使用

    x509.loginUrl = /err.xhtml
    [urls]
    /err.xhtml = anon
    /** = x509
    

    但是它仍然显示一个空白页,所以我认为当验证失败时,我不会被重定向到任何地方


    我的回答解释了可能发生的事情,但现在如何修复它。所以我假设空白页是因为某些东西失败了(空指针或其他什么)。然而,我认为这应该通过一个异常引发500个错误,就像其他所有事情一样。当出现500错误时,我的应用程序将捕获它并显示一个自定义错误页面。这不是在这里发生的。有什么解决方案可以捕捉到这个错误吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   user1156544    7 年前

    我想我已经发现了正在发生的事情。。。

    我的ini中缺少凭据匹配器:

    sha256Matcher = org.apache.shiro.authc.x509.X509CredentialsSha256Matcher
    x509Realm.credentialsMatcher = $sha256Matcher
    

    如果没有这一点,我假设身份验证失败(要么是因为没有匹配器集,要么是因为它使用的默认匹配器不理解证书,而是普通密码),并且它以一个空白页面悄悄结束(如果身份验证失败,可能我必须定义要去哪里)。如果有人知道在哪里做,或者为什么我会得到一张空白页,请告诉我完成答案。

    至于空白页,我发现没有提出任何例外。更多详细信息 here