How to know if the current Servlet request is the result of a redirect?
Is there a way to know if the request has been redirected or forwarded in the doGet
method of a Servlet?
In my application, when a user (whose session has timed out) clicks on a file download link, they're shown the login page, which is good. When they login, they are immediately sent the file they requested, without updating the page they see, which is bad. Basically, they get stuck on the login screen (a refresh is required).
开发者_如何学PythonWhat I want to do is interrupt this and simply redirect to the page with the link, when a file is requested as a result of a redirect.
Perhaps there are better ways to solve this?
The redirect happens client-side. The browser is instructed by the previous request to send a new request, so to the server it does not make a difference. The Referer
header might contain some useful information, but it's not certain.
When redirecting you can append some parameter, like ?targetPage=dowloadpage
and then check if the parameter exists. You may have to put this in a hidden
field on the login page if you want it to be transferred through multiple pages.
If you're using container managed authentication, then I don't believe you can detect this since the server will only involve your resource once authentication has been completed successfully.
If you're managing authentication differently, please explain.
精彩评论