通过 getAuthenticationInfo 验证后的空白页面

Blank page after authentication via getAuthenticationInfo

我创建了一个 Shiro Realm,用于基于 this extension 的 x509 证书。

执行“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 错误时,我的应用程序将捕获它并显示自定义错误页面。这不会发生在这里。捕获该错误的任何解决方案?

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

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

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

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

编辑

至于空白页,我发现没有抛出异常。更多详情 .