Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为每个请求设置属性(Spring REST)_Java_Spring_Rest_Spring Mvc_Java 8 - Fatal编程技术网

Java 为每个请求设置属性(Spring 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

我在春季做一个rest应用程序,我有一个如下的注销方法。我没有关于春天的知识,所以我只是四处寻找,做了这个

@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中?拦截器可以填充请求属性。因此控制器可以检索它。