我在我的應用程序中實現春季安全與JWT我自己的反應,當過未經授權的呼叫時,它返回以下響應如何發送春天
@Override
public void commence(HttpServletRequest request,
HttpServletResponse response,
AuthenticationException authException) throws IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
響應JSON看起來像下面
{
"timestamp": 1497832267379,
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/path"
}
取而代之的是,我可以送自己的自定義響應somethink喜歡:
{
"code":401,
"message":"The request is unauthorized"
}
任何幫助表示讚賞
編輯
我的代碼更新到以下格式:
@Override
public void commence(HttpServletRequest request,
HttpServletResponse response,
AuthenticationException authException) throws IOException {
//response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
status UnautorizedEntry = new status();
UnautorizedEntry.setCode(401);
UnautorizedEntry.setMessage("Unauthorized Entry");
Map<String, Object> UnautorizedEntryResponse=new HashMap<String, Object>();
UnautorizedEntryResponse.put("status", UnautorizedEntry);
objectMapper.writeValue(response.getOutputStream(), UnautorizedEntry);
response.flushBuffer();
}
我的狀態類如下:
public class status {
int code;
String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
現在我得到一個200迴應,但沒有在屏幕上顯示。它完全blank.Any幫助表示讚賞
你應該能夠覆蓋與自定義'AuthenticationFailureHandler'的響應。 – shmosel
目前我重寫開始方法 – Ricky
您的新代碼實際上並未設置狀態。你需要'response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);'使它工作。您必須告訴servlet引擎狀態發生了變化,或者它將默認爲200. – ngreen