首页 > 解决方案 > 当应用程序重定向到另一个应用程序 Meteor JS 时注销用户

问题描述

我有 2 个应用程序,一个用于身份验证,另一个用于产品。登录或验证电子邮件后,用户将被重定向到产品应用程序。在重定向时,最近登录的用户会立即注销,因此对登录用户的引用变为null,并且我需要 auth 应用程序中的登录凭据才能在第二次进行身份验证。当身份验证应用程序重定向到产品应用程序时,如何保持登录状态?

这是 auth 应用程序上的登录功能

var callLogin = function (email, password, router) {
    Meteor.loginWithPassword(email, password, ( error )=> {
        if (error) {
            sAlert.error( error );
        } else {
            sAlert.success("Logged in successfully");
             window.location.replace( "http://localhost:3300/" + Meteor.userId() );
        } 
    });
}

这是产品应用程序上的 onCreated 函数

Tracker.autorun(function () {

        let router = FlowRouter.getParam("_id");
        let AuthConnection = DDP.connect( AuthURL );

         if ( AuthConnection ) {
            console.log( router );
            AuthConnection.call('logins.user', router, ( error, response )=> {
                if ( error ) {
                    console.log( error );
                } console.log( response );
            } );
        }
      });

登录用户始终存在,直到它变为空的重定向。我该怎么做才能在 auth 应用程序中维护用户的登录状态?

标签: meteorexternalurl-redirectionflow-router

解决方案


我假设两个应用程序都连接到同一个数据库?

当您重定向本地状态更改时 - 特别是在这种情况下,您的本地存储状态会跟踪用户恢复令牌。

如果您想允许一个应用程序对另一个应用程序进行身份验证,则需要某种形式的 SSO - 一个简单的实现是在登录后从服务器请求 resumeToken,将其传递给 URL 中的第二个应用程序,然后使用Meteor.loginWithToken. 一种更 hacky(但可能更简单?)的方法可能是从 app1 复制保存在 localStorage 中的令牌,将其通过 URL 传递给 app2,然后也将其保存在那里。


推荐阅读