Ограничить доступ JSP / Servlet только для определенных пользователей - PullRequest
4 голосов
/ 28 июня 2010

Я занимаюсь разработкой веб-приложения.Я хотел бы, чтобы некоторые друзья могли видеть это, но не другие, которые натыкаются на URL.Я собирался поставить целевую страницу, а затем простое поле для пароля.После того, как введен правильный пароль, я просто запишу его в сеансе и оставлю сайт как обычно на оставшееся время, пока браузер остается открытым.

Есть ли стандартный способ сделать это?Я бы добавил дополнительный код в мое веб-приложение для поддержки этого, я не уверен, есть ли уже встроенный способ сделать это (я использую сервлеты Java).

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 июня 2010

Вы можете использовать управляемую контейнером аутентификацию с использованием дескрипторов развертывания .Это не требует дополнительного кода на вашей стороне, кроме простой формы входа в систему с полем ввода и паролем, которое отправляется на URL j_security_check.Вот базовый пример:

<form action="j_security_check" method="post">
    <input type="text" name="j_username">
    <input type="password" name="j_password">
    <input type="submit">
</form>

Предполагая, что у вас есть личные страницы в папке с именем /private и указанная выше страница входа находится в /private/login.jsp, затем добавьте следующие записи в * 1009 веб-приложения*:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Private</web-resource-name>
        <url-pattern>/private/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>friends</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Private</realm-name>
    <form-login-config>
        <form-login-page>/private/login.jsp</form-login-page>
        <form-error-page>/private/error.jsp</form-error-page>
    </form-login-config>
</login-config>

Затем в используемом сервлет-контейнере необходимо настроить так называемое Realm для Private.Поскольку неясно, какой сервлетконтейнер вы используете, вот документ, нацеленный на Tomcat 8.0: Конфигурация области HOW-TO .Вы можете настроить его для проверки комбинации имени пользователя и пароля с файлом XML, базой данных или даже с пользовательским местоположением.


Совершенно другая альтернатива - доморощить механизм входа в систему с помощью Filterкоторый проверяет присутствие вошедшего в систему пользователя в области сеанса.См. это и это ответ, как этого добиться.

0 голосов
/ 28 июня 2010

Вам следует подумать об использовании простой аутентификации с использованием htaccess

См. http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

...