aaaidan
aaaidan

Reputation: 7336

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).

What 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?

Upvotes: 0

Views: 1729

Answers (2)

Bozho
Bozho

Reputation: 597274

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.

Upvotes: 2

no.good.at.coding
no.good.at.coding

Reputation: 20371

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.

Upvotes: 0

Related Questions