javascript - 如果用户未登录,如何运行模式?
问题描述
如果用户未登录并尝试为授权用户单击某些内容,我正在尝试激活模式。
在服务器端,我知道是否要检查我是否已通过身份验证,我只需编写:if(req.isAuthenticated())
和 res.render 一个页面。但是,就我而言,我只是想触发一个提示用户登录的模式。所以我需要在客户端执行此操作。那么我该如何从客户端做到这一点呢?下面是我想出的代码,但 isAuthenticated 变量似乎不是答案。
HTML:
<a id="chkLog"><button class=" btn btn-success mr-2 frftr-grn" id="navbtn">Add</button></a>
client.js(不起作用):
$(function () {
$('#chkLog').click(function () {
if (isAuthenticated) {
window.location.href = "/add";
}
else {
$('#chkLog').modal("show");
}
});
});
在服务器端,我有以下代码:
app.get("/add", (req, res) => {
if(req.isAuthenticated()){
res.render("add");
}else{
res.render("/")
}
});
据我所知,我无法提示服务器端的模式。当然,我必须为服务器端获取请求添加一个 href。所以这让我得出结论,我要么必须找到一种从服务器端加载模式的方法,要么尝试从客户端检查用户是否已登录。
解决方案
在渲染本身时检查身份验证。即,当用户未通过身份验证时呈现href=#
,onClick=modalHandler
并且当用户通过身份验证时显示正常链接并删除 onClick 处理程序。在您的示例中,当用户通过身份验证时,代码将如下所示。
$(function () {
$('#addBtn').click(function () {
window.location.href = "/add";
});
});
当用户未通过身份验证时,您的代码应如下所示。
$(function () {
$('#addBtn').click(function () {
$('#myModal').modal("show");
});
});
生成哪些代码的逻辑必须在ejs
模板中实现。当您单击按钮时,将在浏览器上处理单击事件,因此必须在客户端而不是服务器端编写显示模式的代码。
推荐阅读
- python - PyTorch中点操作导致的层权重
- python - 如何从python中的表中抓取url
- r - 让 R 打印一个 Stata 命令
- python - FPDF Emoji Star 问题
- wcf - System.Security.Cryptography.CryptographicException:使用配置的 WCF 客户端证书身份验证指定的提供程序类型无效
- c# - 如果它们以任何方式交叉,则比较两个 DateTime .TimeOfDay。ASP C#
- sqlalchemy - SQLAlchemy:根据列值有条件地在表中创建关系
- .htaccess - 如何在不禁止访问其文件的情况下使用 htaccess 禁用对文件夹的访问?
- javascript - 在 Javascript 中解析 Promise 数组
- linux - 将系统上所有 git 存储库的远程从 http 更改为 ssh