2013-10-12 12 views
2

내 웹 페이지에 간단한 로그인 양식이 있습니다. 그것은 자바 스크립트를 사용하여 사용자 로그인하고 잘 작동합니다. 문제는 사용자가 방문 페이지 URL을 직접 주소 입력 줄에 입력했기 때문에 직접 로그인하지 않아도 페이지에 직접 액세스 할 수 있습니다. 로그인하지 않았다면 로그인 페이지로 리디렉션하고 싶습니다. 아래의 은 loding 및 대상 페이지의 링크입니다.로그인하지 않은 경우 HTML 페이지 리디렉션

로그인 : http://samdesign.comli.com/protected/index.html

대상 :

<form> 
<table align=center> 
    <tr> 
    <td>Username:</td> 
    <td><input type="text" name="username" style="background:#bfbfbf;color:#212121;border-color:#212121;" onFocus="this.style.background = '#ffffff';" onBlur="this.style.background = '#bfbfbf';"></td> 
    </tr> 

    <tr> 
    <td>Password:</td> 
    <td><input type="password" name="password" style="background:#bfbfbf;color:#212121;border-color:#212121;" onFocus="this.style.background = '#ffffff';" onBlur="this.style.background = '#bfbfbf';"></td> 
    </tr> 

    <tr> 
    <td></td> 
    <td align=right><input type="button" value="Login" onClick="Login(this.form);" style="background:#bfbfbf;color:#000000;border-color:#212121;" onMouseOver="this.style.color = '#404040';" onMouseOut="this.style.color = '#000000';" onFocusr="this.style.color = '#404040';" onBlur="this.style.color = '#000000';"></td> 
    </tr> 
</table> 
</form> 

스크립트가이

function Login(form) { 
username = new Array("numair","sam","u3","u4","u5","u6","u7","u8","u9","u10","temporary"); 
password = new Array("nk1994","sf1993","p3","p4","p5","p6","p7","p8","p9","p10","user"); 
page = "/protected/user-soft.html"; 
if (form.username.value == username[0] && form.password.value == password[0] || form.username.value == username[1] && form.password.value == password[1] || form.username.value == username[2] && form.password.value == password[2] || form.username.value == username[3] && form.password.value == password[3] || form.username.value == username[4] && form.password.value == password[4] || form.username.value == username[5] && form.password.value == password[5] || form.username.value == username[6] && form.password.value == password[6] || form.username.value == username[7] && form.password.value == password[7] || form.username.value == username[8] && form.password.value == password[8] || form.username.value == username[9] && form.password.value == password[9] || form.username.value == username[10] && form.password.value == password[10]) { 
self.location.href = page; 
} 
else { 
alert("Either the username or password you entered is incorrect.\nPlease try again."); 
form.username.focus(); 
} 
return true; 
} 

여기 http://samdesign.comli.com/protected/user-soft.html

하고 .. 사용되는 스크립트는 다음과 같습니다이다 할 수있는 하나의 도움으로 exapmle?

답변

2
// Put this in your login function, just before the redirect 
var sessionTimeout = 1; //hours 
var loginDuration = new Date(); 
loginDuration.setTime(loginDuration.getTime()+(sessionTimeout*60*60*1000)); 
document.cookie = "CrewCentreSession=Valid; "+loginDuration.toGMTString()+"; path=/"; 


// Put this at the top of index page 
if (document.cookie.indexOf("CrewCentreSession=Valid") == -1) { 
    location.href = "/Login.html"; 
} 
+0

는 'self.location' 앞에 있습니까? – sam

+0

그것은 일했다 .... :) – sam

+0

건배 남자! 다음 코드에 대한 최고의 행운을 ... – Ashish

1

자바 스크립트 인증 ?? 이것은 안전하지 않습니다. 모든 인증은 서버 측에서 수행해야합니다.

+0

나는 친구를 알고 있지만 요구 사항은 js를 사용하는 것입니다 ... 캔트 이것으로 끝낼 수 있습니까? – sam

+1

인증시 쿠키를 설정하고 다른 모든 페이지에서 쿠키를 확인하고 로그인 페이지로 리다이렉트해야합니다. 적어도 일반 텍스트가 아닌 배열의 암호를 해시해야합니다. JavaScript md5 라이브러리를 찾으십시오. – Gavin

2

이 인증을하는 올바른 방법이 아니다, 당신은 서버 엔드에서 인증 로직을 유지해야합니다, 당신은 사용할 수 있습니다 Node.js/Ruby-on-Rails(ROR)/JSP/ASP.NET (등 무엇 이제까지 당신이 원하는) 서버 엔드에서.

페이지 보안을 위해 서버 쪽에서 필터를 추가해야합니다 (사용자 세션을 확인할 것임).

관련 문제