How do you handle ajax requests when user is not authenticated?

前端 未结 6 2094
刺人心
刺人心 2020-12-08 02:51

How do you handle ajax requests when user is not authenticated?

Someone enters the page, leaves room for an hour, returns, adds comment on the page that goes throuh

6条回答
  •  执念已碎
    2020-12-08 03:41

    The simplest and cleanest solution I've found for this is to register a callback with the jQuery.ajaxSuccess() event and check for the "X-AspNetMvc-Version" response header.

    Every jQuery Ajax request in my app is handled by Mvc so if the header is missing I know my request has been redirected to the login page, and I simply reload the page for a top-level redirect:

     $(document).ajaxSuccess(function(event, XMLHttpRequest, ajaxOptions) {
        // if request returns non MVC page reload because this means the user 
        // session has expired
        var mvcHeaderName = "X-AspNetMvc-Version";
        var mvcHeaderValue = XMLHttpRequest.getResponseHeader(mvcHeaderName);
    
        if (!mvcHeaderValue) {
            location.reload();
        }
    });
    

    The page reload may cause some Javascript errors (depending on what you're doing with the Ajax response) but in most cases where debugging is off the user will never see these.

    If you don't want to use the built-in header I'm sure you could easily add a custom one and follow the same pattern.

提交回复
热议问题