Java 为每个请求设置属性(Spring REST)
我在春季做一个rest应用程序,我有一个如下的注销方法。我没有关于春天的知识,所以我只是四处寻找,做了这个Java 为每个请求设置属性(Spring REST),java,spring,rest,spring-mvc,java-8,Java,Spring,Rest,Spring Mvc,Java 8,我在春季做一个rest应用程序,我有一个如下的注销方法。我没有关于春天的知识,所以我只是四处寻找,做了这个 @RestController public class LogoutController { @Autowired private DatabaseService databaseService; @RequestMapping(value = "/myApp/user/logout", method = GET, produces = {"application/xml"}) pu
@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-如何获取身份验证标头并检查其是否为null,并给出缺少AuthID的消息 3-如何显式设置属性,并在每个控制器中检查属性是否存在 4-我计划有一个表,我可以在其中存储用户登录时间,并给会话10分钟的时间,如果我收到用户使用AuthID的任何请求,则更新它10分钟以上。那么我可以有一个类或方法来检查任何传入的请求吗?所以我可以检测AuthID并更新我的表
感谢您的时间和帮助。您可以使用拦截器:
拦截器将为每个请求运行。它可以停止请求并自行进行响应。谢谢。这看起来不错。所以我可以在preHandle()中设置请求属性,并将它们放在任何RestController中?拦截器可以填充请求属性。因此控制器可以检索它。