我已经与Laravel创建了一个站点。我正在尝试将该网站投放到chromecast设备上,以在电视上永久显示。我用这个url cast receiver来实现。问题是我的网站需要身份验证,因此当我发送iframe时,chromecast内部浏览器会加载该网站,但会卡在登录页面上。而且由于我无法控制预览显示,因此无法在此处登录。
是否可以通过电话将登录的会话从手机传递到chromecast中的已发送站点?
我正在考虑创建一些临时会话ID,并将其存储在用户表的DB中,如果URL中存在该会话ID,PHP将为用户创建登录状态。我知道这可能存在一些安全问题,但我想不出其他方法通过chromecast解决此问题。
任何其他想法,将不胜感激。
注:镜像设备不是理想的,因为电话需要一直显示屏幕以进行镜像,这是不可行的。我希望人们在不显示手机的情况下投放该网站。
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');