확인 - 기본 솔루션이있어, 최선을 말하지는 않지만 작업을 수행 할 것처럼 보입니다. Sanjiv Jivan하여 블로그 게시물을 기반으로
그
http://www.jroller.com/sjivan/entry/ajax_based_login_using_aceci
편집 : 단지 그것을 할 수있는 또 다른 방법이있을 수 있습니다 것 같습니다 해당 게시물에 대한 의견을 읽고 데, 또한 포스트는 3 거기에 더 나은 솔루션이 있다면 어쩌면 놀라지 않을 것입니다. 아마도 Spring이나 J2EE의 새로운 기능을 사용했을 것입니다. 하지만 지금은 이걸 고수 할거야.
그는 여기에 문서화 작업을 잘 했으므로 Spring Security 샘플 애플리케이션을 복사하여 시작하는 예제를 얻었습니다. 그런 다음 Sanjiv에서 설명한 ServletFilter를 추가하십시오. .
그는이 필요 하나 또는 두 가지 변화가 있었다 (지금은 봄 보안라고도 함) Acegi Security는 이전 버전의 사용되면서
:
URL 패턴이 지금을 "/j_spring_security_check
"(안 "/j_acegi_security_check
"), 그리고 내가 발견 사실을 반환하는 isAjaxRequest 메서드를 얻으려면 "ajax"라는 입력을 추가해야했습니다. 자바 스크립트에서 뭔가 빠졌다고 추측합니다.
"login_error = 1"대신 "login_error"가 있는지 확인하기 위해 필터의 한 줄을 변경해야합니다. 이는 새로운 버전의 SpringSecurity에서 변경된 내용을 추측합니다. 즉 : 또한
if (redirectURL.indexOf("login_error") == -1) {
내가 jQuery를 사용하여 테스트 자바 스크립트와 기본 HTML 페이지를 만든 프로토 타입을하지 jQuery를 사용하고있다.
황급하고 준비가되어있는 상태는 "url :/msgbrd /"또는 "error : Bad credentials"이지만 쉽게 쉽게 정리할 수 있습니다. 그것은 여기에 도움이 경우
내 예를 들어 index.html을이다 :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
var loginOptions = {
beforeSubmit: postingLogin, // pre-submit callback
success: showResponse, // post-submit callback
type: 'post',
url: '/msgbrd/j_spring_security_check' ,
clearForm: true
};
$(document).ready(function(){
$('#loginForm').ajaxForm(loginOptions);
});
function postingLogin() {
console.log("Login posting: ");
}
function doneLogin() {
console.log("Login posted ");
}
function showResponse(responseText, statusText) {
$("#statusMessage").empty();
$("#statusMessage").append(responseText);
}
</script>
</head>
<body>
<h1>msgbrd</h1>
<div>
<form id="loginForm" action="" method="POST">
<p><label for="username"> User Name: </label> <input id="username"
type="text" name="j_username" class="loginText"></p>
<p><input id="ajax" name="ajax" value="ajax"></input></p>
<p><label for="password"> Password: </label> <input id="password"
type="password" name="j_password" class="loginText"
onkeydown="loginOnEnter(event);"></p>
<p><label for="remember_me"> <input id="remember_me"
type="checkbox" name="_acegi_security_remember_me">Remember Me</label>
</p>
<p><input type="submit" value="Go"></input></p>
<p id="statusMessage"></p>
</form>
</div>
</body>
</html>
확인 - 빠른 답장을 보내 주셔서 감사합니다, 나는 조사하고 다시보고합니다 –