如何在浏览器之间传递会话?

问题描述 投票:0回答:1

我已经与Laravel创建了一个站点。我正在尝试将该网站投放到chromecast设备上,以在电视上永久显示。我用这个url cast receiver来实现。问题是我的网站需要身份验证,因此当我发送iframe时,chromecast内部浏览器会加载该网站,但会卡在登录页面上。而且由于我无法控制预览显示,因此无法在此处登录。

是否可以通过电话将登录的会话从手机传递到chromecast中的已发送站点?

我正在考虑创建一些临时会话ID,并将其存储在用户表的DB中,如果URL中存在该会话ID,PHP将为用户创建登录状态。我知道这可能存在一些安全问题,但我想不出其他方法通过chromecast解决此问题。

任何其他想法,将不胜感激。

注:镜像设备不是理想的,因为电话需要一直显示屏幕以进行镜像,这是不可行的。我希望人们在不显示手机的情况下投放该网站。

javascript php laravel chromecast
1个回答
1
投票

Laravel使您可以轻松地为命名路由创建“签名” URL。这些URL在查询字符串后附加一个“签名”哈希,这使Laravel可以验证该URL自创建以来未被修改。签名的URL对于可公开访问但需要防止URL操纵的保护层的路由特别有用。

例如,您可以使用签名的URL登录用户数据。要创建指向命名路由的签名URL,请使用signedRoute外观的URL方法:

use Illuminate\Support\Facades\URL;

return URL::signedRoute('chromecastLogin', ['user' => 1]);

如果您希望生成一个过期的临时签名路由URL,则可以使用temporarySignedRoute方法:

return URL::temporarySignedRoute(
    'chromecastLogin', now()->addMinutes(60), ['user' => 1]
);

验证签名的路由请求

要验证传入的请求具有有效的签名,您应该在传入的hasValidSignature上调用Request方法:

use Illuminate\Http\Request;

Route::get('/chromecastLogin/{user}', function (Request $request) {
    if (! $request->hasValidSignature()) {
        abort(401);
    }

    // login the user
})->name('chromecastLogin');
© www.soinside.com 2019 - 2024. All rights reserved.