我已经实现了承载令牌身份验证(每个请求中的身份验证,标头中包含client-id和access-token)。
当我使用错误的凭据(Access-Token)时,我回到了一个空的“200 OK”,这是预期的吗?不应该是401或404吗?当我使用正确的凭证时,我会收到“200 OK”预期的Json响应,包含正文内容。
我正在使用DefaultPasswordService和AuthorizingRealm。也许我错过了什么?
使用Shiro 1.2.3
答案 0 :(得分:0)
我想我解决了这个问题。
在我的onAccessDenied()看起来像这样之前:
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response)
throws Exception {
if (hasAuthorizationToken(request)) {
// Proceed with authentication
return executeLogin(request, response);
}
// Return 401 if authentication failed
WebUtils.toHttp(response).sendError(
Status.UNAUTHORIZED.getStatusCode(),
"Oops, Authentication required");
return false;
}
现在看起来像这样:
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response)
throws Exception {
boolean authenticated = false;
if (hasAuthorizationToken(request)) {
// Proceed with authentication
authenticated = executeLogin(request, response);
}
// Return 401 if authentication failed
if (!authenticated)
WebUtils.toHttp(response).sendError(
Status.UNAUTHORIZED.getStatusCode(),
"Oops, Authentication required");
return authenticated;
}
我需要在身份验证失败时手动返回Status.UNAUTHORIZED。