meteor - 当应用程序重定向到另一个应用程序 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 应用程序中维护用户的登录状态?
解决方案
我假设两个应用程序都连接到同一个数据库?
当您重定向本地状态更改时 - 特别是在这种情况下,您的本地存储状态会跟踪用户恢复令牌。
如果您想允许一个应用程序对另一个应用程序进行身份验证,则需要某种形式的 SSO - 一个简单的实现是在登录后从服务器请求 resumeToken,将其传递给 URL 中的第二个应用程序,然后使用Meteor.loginWithToken
. 一种更 hacky(但可能更简单?)的方法可能是从 app1 复制保存在 localStorage 中的令牌,将其通过 URL 传递给 app2,然后也将其保存在那里。
推荐阅读
- ios - 可以转换为 Swift 5
- lazarus - 当我尝试将文本输出到透明图像时没有任何反应
- html - 如何使用css创建带有数字点的垂直线?
- ruby-on-rails - 如何修复“Bundler 2 需要 RubyGems 2.5 或更高版本”
- javascript - 如何在获取承诺中获得第一个数组
- windows-10 - 运行 npm run dist 后 dist 文件夹被锁定
- spring-boot - 如何为 Camel JMS 应用程序实现 CRL 和 OCSP?
- angular - 如何将 Firebase 实时数据库连接到我的 Angular 7 应用程序?使用 CRUD 操作
- xml - 错误:“(”需要启动 ATTLIST 枚举
- android - 检测导航组件中的弹出