2013-05-29 4 views
1

EDIT: URL-адрес я считаю. В работе login.html случае я получил в журнале:j_security_check с ajax

FINE: проверка безопасности запрос POST/SesamaMaven/защищенный/администратор/j_security_check

И в AJAX-версии, которую я получил:

FINE: Безопасность проверки запроса POST/SesamaMaven/

Я настроил проверку подлинности в Glassfish с JDBCRealm и это, кажется, работает с нормальным login.html так:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Login Form</title> 
</head> 

<body> 
<form method="post" action="j_security_check"> 
<p>You need to log in to access protected information.</p> 
<table> 
<tr> 
    <td>User name:</td> 
    <td><input type="text" name="j_username" /></td> 
</tr> 
<tr> 
    <td>Password:</td> 
    <td><input type="password" name="j_password" /></td> 
</tr> 
</table> 
<p><input type="submit" value="Login" /></p> 
</form> 
</body> 
</html> 

Моя проблема в том, что когда я пытаюсь реализовать ее с AJAX, она не работает. Есть ли возможность получить эту работу?

HTML

<form class="navbar-form pull-right"> 
    <input class="span2" type="text" placeholder="Email" name="j_username" id="username"> 
    <input class="span2" type="password" placeholder="Password" name="j_password" id="password"> 
    <button type="button" class="btn" id="btnSignIn">Sign in</button> 
</form> 

JS

$('#btnSignIn').click(function() { 


$.ajax({ 
       type: "POST", 
       contentType: "application/text", 
       url: "j_security_check", 
       // This is the type what you are waiting back from the server 
       dataType: "text", 
       async: false, 
       crossDomain: false, 
       data: { 
        j_username: "admin", 
        j_password: "paSSWORD" 
       }, 
       success: function(data, textStatus, xhr) { 
        alert('Thanks for your signin in! ' + xhr.status); 
        window.location = "/SesamaMaven/protected/adminWelcome.html"; 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        console.log(textStatus, errorThrown); 
        window.location = "/SesamaMaven/index.html"; 
        alert(' Error in signIn-process!! ' + textStatus); 
       } 


      }); 
     }); 

ВОПРОСЫ

1) Что такое правильный CONTENTTYPE: "приложение/текст"?

2) Правильно ли указан тег URL или я должен использовать действие?

3) Как насчет параметров имени пользователя и пароля в таком случае?

Glassfish пытается аутентифицироваться, но нет пользователя и пароля.

+0

Старый, поэтому только для заинтересованных: 1) Прежде чем войти в систему, вам нужно попасть на защищенную страницу (контейнер должен инициировать процесс входа в систему). 2.Ответ на неудачный вход - перенаправление на URL-адрес ошибки, поэтому вам нужно проверить это в ответе ajax. 3. Content-Type должен быть «x-www-form-urlencoded» (обычный пост HTML-формы) –

ответ

0

contentType: «приложение/текст» является виновником. Я просто прокомментировал это, и все начало работать.

Одна проблема есть еще есть. Когда есть ошибка в аутентификации, она перенаправляется на index.html, но нет css, а адресная строка содержит адрес, куда он должен идти в преследуемом случае /protected/adminWelcome.html.

0

Я добавляю этот код в login.html файл.

В процессе развития, я чувствую себя ленивым ввести имя пользователя и пароль

xhttp.open("POST", "j_security_check", true); 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhttp.send("j_username=MY_USERNAME&j_password=MY_PASSWORD"); 
location.reload(true); 

кажется, что вы попытаться инфор пользователя, когда они вводят неверный удостоверение.

В моем случае, у меня есть login.html и ошибок login.html точно так же,

кроме ошибки-login.html имеет текст "Вы ввода неправильного пароля или имя пользователя "

Смежные вопросы