
Народ, мож кто может кодом помочь, как мне сделать окно ввода логина и пароля. Причём, не просто два Edit'a, а дополнительное, появляющееся при заходе на страницу. Как на платных порносайтах
Здравствуйте, Atomik, Вы писали:
A>
Народ, мож кто может кодом помочь, как мне сделать окно ввода логина и пароля. Причём, не просто два Edit'a, а дополнительное, появляющееся при заходе на страницу. Как на платных порносайтах 
Вообще если вы про сервер-сайд приложение — то это окно делает используемый пользователем браузер. Для того чтобы браузер вывел это окно, надо соответствующим образом настроить сервер. В случае веб-приложения на сервлетах в web.xml надо прописать
<!-- Security -->
<security-constraint>
<web-resource-collection>
<web-resource-name>application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
<role-name>role2</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<web-resource-collection> — задает ресурс, для которого требуется аутентификация,
<auth-constraint> — ограничения на доступ (разрешается только пользователям с ролью <role-name>)
<login-config> — ключевой момент. Задает тип аутентификации. В примере выше — BASIC — как раз и вызовет необходимый вам диалог при обращении к любому ресурсу вебприложения, обработку которого производит ваш контейнер.
Проблема в том, что мне необходимо введённую информацию записать. А как это сделать?(в смысле не записать, а отловить)!
Здравствуйте, Atomik, Вы писали:
Вам надо анализировать запрос. Если дпроизводилась авторизация, в запросе будут заголовки или будут установлены сесионные атрибуты (в зависимости от способа аутентификации). Можно написать что-то в этом роде:
String loginName = null;
String loginPassword = null;
String authType = request.getAuthType();
if ("FORM".equals(authType)) {
javax.servlet.http.HttpSession httpSession = request.getSession(false);
if (httpSession != null) {
loginName = (String)httpSession.getAttribute("j_username");
loginPassword = (String)httpSession.getAttribute("j_password");
}
} else if ("BASIC".equals(authType)) {
String authorization = request.getHeader("Authorization");
final String prefix = "Basic ";
if (authorization != null && authorization.startsWith(prefix)) {
authorization = decodeBase64(authorization.substring(prefix.length()).trim());
int colon = authorization.indexOf(':');
if (colon >= 0) {
loginName = authorization.substring(0, colon);
loginPassword = authorization.substring(colon + 1);
}
}
}
decodeBase64 — декодирует переданую строку из BASE64 кодировки