javascript - 如果用户未登录,如何运行模式?

标签 javascript express passport.js ejs

如果用户未登录并尝试为授权用户单击某些内容,我将尝试激活模态。

在服务器端,我知道是否要检查我是否已通过身份验证,我只需编写: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模板中实现。当您点击按钮时,点击事件将在浏览器上处理,因此显示模式的代码必须在客户端而不是服务器端编写。

关于javascript - 如果用户未登录,如何运行模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58667966/

相关文章:

node.js - User.save 到 DB(使用 mongoose)不是一个函数

javascript - 为什么mysql查询 "select count(*) from table"返回 "[object Object]"作为结果?

javascript - 只允许小数点前千位和小数点后 4 位的数字

javascript - 无法理解为什么此验证未按预期工作

javascript - 如何连接两个应用程序React/Node?

node.js - Postman 中的意外 ' ' 要求注册一个带有 Passport 的帐户, Sequelize 和 express

node.js - 快速 session 不会注销

Javascript 页面加载延迟 1-2 秒,样式怪异

javascript - 将 HTML 表单输入存储在 JS 对象中

node.js - 下载后 Node 写入损坏的 .xlsx 文件