Javascript 如何在浏览器之间传递会话?
我已经创建了一个与拉威尔网站。我正试图将该网站转换成chromecast设备,作为电视上的永久显示器。我用这个来达到这个目的。问题是,我的站点需要身份验证,因此当我发送iframe时,chromecast内部浏览器会加载该站点,但它会卡在登录页面上。由于我无法控制预览显示,因此无法登录 在chromecast中,是否有办法将登录会话从手机传递到发送站点 我正在考虑创建一些临时会话id,存储在用户表的DB中,如果URL中存在此会话id,PHP将为用户创建登录状态。我知道这可能会有一些安全问题,但我想不出用chromecast解决这个问题的其他方法 任何其他想法都将不胜感激Javascript 如何在浏览器之间传递会话?,javascript,php,laravel,chromecast,Javascript,Php,Laravel,Chromecast,我已经创建了一个与拉威尔网站。我正试图将该网站转换成chromecast设备,作为电视上的永久显示器。我用这个来达到这个目的。问题是,我的站点需要身份验证,因此当我发送iframe时,chromecast内部浏览器会加载该站点,但它会卡在登录页面上。由于我无法控制预览显示,因此无法登录 在chromecast中,是否有办法将登录会话从手机传递到发送站点 我正在考虑创建一些临时会话id,存储在用户表的DB中,如果URL中存在此会话id,PHP将为用户创建登录状态。我知道这可能会有一些安全问题,但我
注意:镜像设备并不理想,因为手机需要始终打开屏幕才能进行镜像,这是不可行的。我希望人们在不打开手机屏幕的情况下发布网站。Laravel允许您轻松创建命名路由的“签名”URL。这些URL在查询字符串后附加了一个“签名”散列,允许Laravel验证URL自创建以来是否未被修改。签名URL对于可公开访问但需要一层保护以防止URL操纵的路由特别有用 例如,您可以使用已签名的URL登录用户数据。要创建命名路由的签名URL,请使用
URL
facade的signedRoute
方法:
use Illuminate\Support\Facades\URL;
return URL::signedRoute('chromecastLogin', ['user' => 1]);
如果要生成过期的临时签名路由URL,可以使用temporarySignedRoute
方法:
return URL::temporarySignedRoute(
'chromecastLogin', now()->addMinutes(60), ['user' => 1]
);
验证已签名的路由请求
要验证传入请求是否具有有效的签名,应调用传入请求的hasValidSignature
方法:
use Illuminate\Http\Request;
Route::get('/chromecastLogin/{user}', function (Request $request) {
if (! $request->hasValidSignature()) {
abort(401);
}
// login the user
})->name('chromecastLogin');
有趣!我应该添加什么文件Url::signedRoute
?您必须在控制器中执行此操作,生成此已签名的Url,然后将其显示给用户,以便单击它登录chomeCast。您还可以直接生成和重定向它。好的,这对PHP是有效的,但我也使用Vue,所有调用都是未经授权的。你知道为什么吗?我很好地绕过了登录。谢谢但它只适用于“location”类型,而不适用于取消控件的iframe