我有一个C#MVC项目,这是我的Javascript文件,用于检查用户是否已登录。我遇到的问题是,即使我的shouldlogin
的值交替出现,页面仍在刷新。该JS文件的目的是检查用户是否已登录,并将其重定向到Authorize Header保护的主页。我知道这并不是执行此操作的最佳方法,但是如果有人提供一些指导,将不胜感激。谢谢!
var shouldlogin = true;
var token = localStorage.getItem("token");
$(document).ready(function(){
var loggedIn = checkLogin();
if(loggedIn === true && shouldlogin === true)
{
if (shouldlogin === true)
{
setHeader();
redirectToHome();
return true;
}
}
else if(loggedIn === false && shouldlogin === false)
{
redirectToLogin();
return true;
}
return false;
});
function setHeader()
{
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', token);
}
});
}
function redirectToHome()
{
shouldlogin = false;
$.ajax({
type: 'GET',
contentType: 'application/json; charset=utf-8;',
url: 'Home/Index',
success: function (response) {
$("body").html(response);
}
});
}
function checkLogin()
{
if (token === null)
{
return false;
}
else
{
return true;
}
}
function redirectToLogin()
{
$.ajax({
type: 'GET',
contentType: 'application/json; charset=utf-8;',
url: 'Account/Index',
success: function (response) {
$("body").html(response);
}
});
}
function logOut()
{
shouldlogin = true;
localStorage.clear();
redirectToLogin();
}
编辑:我发现这陷入了无限循环,而忽略了我的条件语句。我将它们打印出来,它仍然表明它们不应该真正落在第一个if(导致无限刷新的对象)内部。
答案 0 :(得分:0)
请注意,如果此JS脚本正在浏览器中执行,则可能是安全问题。攻击者可以在浏览器中修改您的脚本并绕过您的登录逻辑。通常,此检查应在服务器端进行。如果服务器发现客户端未登录,则它将重定向到登录页面,只有在此之后,它才能向客户端授予对所请求资源的访问权限。