我正在春天做一个休息应用程序,我有一个如下所示的注销方法。我对春天没有任何了解,所以我只是四处寻找并做了这个。
@RestController
public class LogoutController {
@Autowired
private DatabaseService databaseService;
@RequestMapping(value = "/myApp/user/logout", method = GET, produces = {"application/xml"})
public Users performLogout(@RequestHeader("AuthenticationID") String authID, HttpServletRequest request) throws DatatypeConfigurationException {
return handleLogout(request, authID);
}
private Users handleLogout(HttpServletRequest request, String authID) throws DatatypeConfigurationException {
LogService.info(this.getClass().getName(), "Received Logout Request");
final UsersXMLBuilder usersXMLBuilder = new UsersXMLBuilder();
Users usersXML = usersXMLBuilder.buildDefaultUsersTemplate();
HttpSession session = request.getSession();
AppUtilities utils = new AppUtilities();
try {
//Checking with RegEX
if (utils.isValidUUID(authToken)) {
//Get User Login Record from DB By the AuthID and Delete It
//Invalidate The Session
session.invalidate();
LogService.info(this.getClass().getName(), "Session Invaliated");
} else {
LogService.info(this.getClass().getName(), "Invalid AuthID Found. Not a Valid UUID");
usersXML.setResponseCode(-5);
usersXML.setResponseText("User Session is Not Valid");
}
} catch (Exception ex) {
LogService.error(this.getClass().getName(), ex);
usersXML.setResponseCode(-4);
usersXML.setResponseText("Error Occured!");
return usersXML;
} finally {
LogService.info(this.getClass().getName(), "LogOut Process Finished");
}
return usersXML;
}
}
问题
1-当我在请求中未传递任何身份验证ID时,当spring提供白标错误页面时,我是否可以返回XML消息。
2-如何获取Authentication Header并将其检查为null并提供缺少AuthID的消息。
3-如何明确设置属性并在每个控制器中检查它是否存在。
4-我计划有一个表格,我可以存储用户登录时间并给出一个10分钟的会话时间,如果我收到来自具有AuthID的用户的任何请求,则更新10分钟。那么我可以有一个类或方法来检查任何传入的请求吗?所以我可以检测到AuthID和更新我的表。
感谢您的时间和帮助。
答案 0 :(得分:2)
拦截器将针对每个请求运行。它可以停止请求并自行做出响应。