Запрет на прямой доступ к страницам JSP - PullRequest
15 голосов
/ 02 сентября 2011

Я использую Struts 1.3 для своего приложения, и все страницы JSP пересылаются через контроллер (класс действия). Но если я получаю доступ к странице JSP напрямую, я могу получить к ней доступ. Как мне это предотвратить?

Ответы [ 4 ]

16 голосов
/ 02 сентября 2011

поместите все ваши jsp-ы в папку WEB-INF (например, в папку WEB-INF / jsp) и не забудьте изменить свое отображение относительно расположения jsp-s.

4 голосов
/ 02 сентября 2011

Фильтры используются для обхода или прерывания запросов, поэтому используйте фильтры для ограничения запроса, если он не содержит .do в URL.Ниже приведен хороший учебник для фильтров

Фильтры

2 голосов
/ 02 сентября 2011

Я думаю, что лучшим вариантом было бы поместить ваши веб-страницы в папку WEB-INF - таким образом, они не будут доступны напрямую, но тогда в ваших сервлетах вы можете иметь что-то вроде:

public class ControllerServlet extends HttpServlet {

    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        String userPath = request.getServletPath();

        // if category page is requested
        if (userPath.equals("/category")) {
            // TODO: Implement category request

        // if cart page is requested
        } else if (userPath.equals("/viewCart")) {
            // TODO: Implement cart page request

            userPath = "/cart";

        // if checkout page is requested
        } else if (userPath.equals("/checkout")) {
            // TODO: Implement checkout page request

        // if user switches language
        } else if (userPath.equals("/chooseLanguage")) {
            // TODO: Implement language request

        }

        // use RequestDispatcher to forward request internally
        String url = "/WEB-INF/view" + userPath + ".jsp";

        try {
            request.getRequestDispatcher(url).forward(request, response);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Взято из: http://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html

1 голос
/ 02 сентября 2011

Вы можете использовать фильтры и ограничить запрос URL-адресом, запрашивающим страницы .jsp, и разрешать только запросы, запрашивающие .do

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...