首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何知道用户是否使用passport.js登录?

如何知道用户是否使用passport.js登录?
EN

Stack Overflow用户
提问于 2013-09-11 19:18:53
回答 5查看 91K关注 0票数 112

我已经阅读了两天的passport.js信息和样本,但我不确定在那之后我做了所有的认证过程。

我如何知道我是否已登录,例如,我将有一个带有登录或注销按钮的导航栏,是否有一些变量如下面的代码所示?

代码语言:javascript
复制
if (login)
   <button>logout</button>
else 
   <button>login</button>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-11 19:29:11

如果用户已登录,passport.js将在req中为express.js中的每个请求创建user对象,您可以检查该对象是否存在于任何中间件中:

代码语言:javascript
复制
if (req.user) {
    // logged in
} else {
    // not logged in
}

您可以为此创建简单的express.js中间件,它将检查用户是否已登录,如果未登录,将重定向到/login页面:

代码语言:javascript
复制
function loggedIn(req, res, next) {
    if (req.user) {
        next();
    } else {
        res.redirect('/login');
    }
}

并使用它:

代码语言:javascript
复制
app.get('/orders', loggedIn, function(req, res, next) {
    // req.user - will exist
    // load user orders and render them
});
票数 225
EN

Stack Overflow用户

发布于 2013-11-19 03:52:02

如果您想在您的模板中使用它,因为您的代码示例似乎表明您可以创建一些中间件,如下所示:

代码语言:javascript
复制
app.use(function (req, res, next) {
  res.locals.login = req.isAuthenticated();
  next();
});

在设置passport之后,将代码放在某个地方。

然后在你的模板中使用它(swig示例)

代码语言:javascript
复制
{% if login %}
<button>logout</button>
{% else %} 
<button>login</button>
{% endif %}
票数 50
EN

Stack Overflow用户

发布于 2018-10-05 17:35:11

我正在寻找这样的解决方案,偶然发现了这个页面。问题是如何在客户端查看登录状态。

登录后,我隐藏登录按钮,并显示注销按钮。在页面刷新时,我再次看到登录按钮,而不是注销按钮。如果您使用的是session,则唯一的解决方案是将项目保存在sessionStorage中(如果您使用的是JWT,则保存为localStorage )。注销时删除此项目。然后,在每次加载页面时,检查此sessionStorage项并执行相应操作。

代码语言:javascript
复制
if (sessionStorage.getItem('status')) {
    $("#btnlogout").show();
    $("#btnlogin").hide();
// or what ever you want to do
} else {
    $("#btnlogout").hide();
    $("#btnlogin").show();
}



function Login() {
            var data = {
                username: $("#myModal #usr").val(),
                password: $("#myModal #pw").val()

            };
            $.ajax({
                type: 'POST',
                url: '/login',
                contentType: 'application/JSON; charset=utf-8',
                data: JSON.stringify(data),
                success: funcSuccess,
                error: funcFail
            });
            function funcSuccess(res) {
                sessionStorage.setItem('status', 'loggedIn');

                $("#btnlogout").show();
                $("#btnlogin").hide();
            }
            function funcFail() { $("#pp").text('Login Failed'); };
        };

function Logout() {
    $.ajax({
        type: 'GET',
        url: '/logout',
        contentType: 'application/JSON; charset=utf-8',
        success: funcSuccess,
        error: funcFail,
    });
    function funcSuccess(res) {
        $("#btnlogout").hide();
        $("#btnlogin").show();
        sessionStorage.removeItem("status");
    };
    function funcFail() { alert('Login method Failed'); };
}; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18739725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档