Javascript 如果用户不是';你没有登录吗?
我正在尝试在用户未登录时进行模式激活,并尝试为授权用户单击某些内容 在服务器端,我知道如果我想检查我是否经过身份验证,我只需写:Javascript 如果用户不是';你没有登录吗?,javascript,express,passport.js,ejs,Javascript,Express,Passport.js,Ejs,我正在尝试在用户未登录时进行模式激活,并尝试为授权用户单击某些内容 在服务器端,我知道如果我想检查我是否经过身份验证,我只需写:if(req.isAuthenticated())和res.render页面。然而,在我的例子中,我只想触发一个模式,提示用户登录。所以我需要在客户端做这件事。那么我如何从客户端做到这一点呢?下面是我提出的代码,但isAuthenticated变量似乎不是答案 HTML: <a id="chkLog"><button class=" btn btn-s
if(req.isAuthenticated())
和res.render页面。然而,在我的例子中,我只想触发一个模式,提示用户登录。所以我需要在客户端做这件事。那么我如何从客户端做到这一点呢?下面是我提出的代码,但isAuthenticated变量似乎不是答案
HTML:
<a id="chkLog"><button class=" btn btn-success mr-2 frftr-grn" id="navbtn">Add</button></a>
$(function () {
$('#chkLog').click(function () {
if (isAuthenticated) {
window.location.href = "/add";
}
else {
$('#chkLog').modal("show");
}
});
});
<%if(logStatus){%>
<script>
$('#chkLog').click(function () {
window.location.href = "/add";
});
</script>
<%}else{%>
<script>
$('#chkLog').click(function () {
$('#myModal').modal("show");
});
</script>
<% }; %>
在服务器端,我有以下代码:
app.get("/add", (req, res) => {
if(req.isAuthenticated()){
res.render("add");
}else{
res.render("/")
}
});
据我所知,我不能为服务器端提示模式。当然,我必须为服务器端的get请求添加一个href。因此,我得出的结论是,我要么必须找到从服务器端加载模式的方法,要么尝试从客户端检查用户是否登录 在渲染时检查身份验证。i、 e.当用户未通过身份验证时,呈现
href=#
和onClick=modalHandler
以及当用户通过身份验证时,显示正常链接并移除onClick处理程序。
在您的示例中,当对用户进行身份验证时,代码将如下所示
$(function () {
$('#addBtn').click(function () {
window.location.href = "/add";
});
});
当用户未通过身份验证时,您的代码应该如下所示
$(function () {
$('#addBtn').click(function () {
$('#myModal').modal("show");
});
});
生成代码的逻辑必须在
ejs
模板中实现。当您点击按钮时,点击事件将在浏览器上处理,因此显示模式的代码必须在客户端而不是服务器端写入。为了根据用户是否经过身份验证触发客户端if-else语句,您希望在应用程序中准备好isAuthenticated if/else语句。请为呈现的页面使用布尔值。从客户端使用ejs创建客户端脚本
服务器端:
<a id="chkLog"><button class=" btn btn-success mr-2 frftr-grn" id="navbtn">Add</button></a>
$(function () {
$('#chkLog').click(function () {
if (isAuthenticated) {
window.location.href = "/add";
}
else {
$('#chkLog').modal("show");
}
});
});
<%if(logStatus){%>
<script>
$('#chkLog').click(function () {
window.location.href = "/add";
});
</script>
<%}else{%>
<script>
$('#chkLog').click(function () {
$('#myModal').modal("show");
});
</script>
<% }; %>
客户端EJS:
<a id="chkLog"><button class=" btn btn-success mr-2 frftr-grn" id="navbtn">Add</button></a>
$(function () {
$('#chkLog').click(function () {
if (isAuthenticated) {
window.location.href = "/add";
}
else {
$('#chkLog').modal("show");
}
});
});
<%if(logStatus){%>
<script>
$('#chkLog').click(function () {
window.location.href = "/add";
});
</script>
<%}else{%>
<script>
$('#chkLog').click(function () {
$('#myModal').modal("show");
});
</script>
<% }; %>
$('#chkLog')。单击(函数(){
window.location.href=“/add”;
});
$('#chkLog')。单击(函数(){
$('myModal').modal(“show”);
});
是,但是如何检查用户是否在客户端进行了身份验证?这就是我的问题所在。对不起,我没有把那部分讲清楚(如果(未经验证)在客户端不起作用。在服务器上执行,同时呈现模板。我假设您正在使用ejs。好的,我确实在服务器端处理了该部分,但如何从服务器端触发模式?老实说,我没有看到您所描述的全部内容。抱歉。我将进一步编辑我的初始帖子以了解更多详细信息。@VI11age_ID10T我已经更新了答案,看看这对您是否有意义。是的,在if-else块中