laravel xxx.blade.php 识别登录状态的cookie 怎么获取

1. 运行环境

laravel 5.8

2. 问题描述?

现在有两个项目,
A:手机APP
B:laravel项目

A项目的当前登陆的人通过webview打开B的一个页面,同样是登录状态。

目前实现思路是这样的:
B的登录状态不就是cookie的key—value么。获取他不就行了。然后就有了下面的代码

\Auth::attempt(['email' => $userAccountData['user_email'], 'password' => $userAccountData['user_password']]);
session()->regenerate();
$sessionId = Crypt::encryptString(session()->getId());

然后我就打开B的登录页面。手动去添加这个sessionId测试一下,结果登录不上??我的问题就在这。

然后试了下正常登录B。然后将B登录状态的那个cookie的value复制出来对比看看发现上方的代码的sessionId明显比正常模式的要短。

现在怀疑上方代码是错的,代码是chatgpt给我的
请教各路大神。感激不尽

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

感谢各位的积极参与。这个问题解决了。
laravel 控制器中 return response()->json()的response的header中set-cookie有识别的登录的session信息。
不管前端怎么做,只要他下次请求我的网站的时候给请求头中设置这个session信息就好了。

2个月前 评论
讨论数量: 14

a和b都是laravel后端?还是a是app起的服务的页面?

2个月前 评论
daxiaobuzhaodiao (楼主) 2个月前
deatil (作者) 2个月前

代码当然是错的,laravel 的 cookie 加密不是这么简单, 首先通过 webview 打开的页面自然带着用户的标识吧,一般是加密字符串或者一个普通字符串,后端拿到这个参数识别出用户id,然后给它登陆,即不需要账户名密码就可以登陆,关键是这个参数的设计

2个月前 评论
php_yt (作者) 2个月前

直接用sanctum就可以,a打开页面之前请求token,然后打开时追加到url里,还可以设置过期时间和权限

2个月前 评论
sanders

app 也是基于 cookie 进行鉴权的吗?如果你是通过 PHP 的 session 来进行鉴权验证的,你可以让 app 客户端使用 webview 的时候让其添加对应的 cookie 内容。

2个月前 评论
daxiaobuzhaodiao (楼主) 2个月前

其实我的我的问题是web的登录机制,举个例子

如果是直接打开B的网页。直接get 请求吧token拼接到query里面。我控制认证,直接Auth::atemp() 最后直接 return redirect()->routeI()。就完事了

2个月前 评论

对面是缅甸人。语言不通。对面是ios的 SFSafariViewController 这种请求。我对他的请求不了解。主要是、

在举个例子。A已经打开了一个B的网页,不需要认证的。谁都能打开的网页。网页里面发起一个类似于ajax的请求。B直接Auth::login(),返回一个需要登录redirectUrl网址,A直接location.href=redirect 打开 redirectUrl 也能实现登录。

但是还有这么一种情况,也正是我现在担心的情况。因为我不了解SFSafariViewController这个东西
A的请求他不基于web页面的(类似于curl)。我只能返回json,而且我必须得给他返回凭证。而且注意我提到的我的B是laravel blade,他的登录状态是基于session的。那是不是我就得给A返回这个登录的session。我的问题就卡在这里了。这个session我咋获取???

2个月前 评论
deatil 2个月前

为什么现在这么麻烦呢。只因为上司说 A的登录状态的token得从header去传,不能拼接到URL的query用get去请求B。

但是上司是个小日本。他不太懂技术。我要跟他讲明白就费劲的很!!
我现在想着这么弄。我给他绕一下。
第一步A-B的请求不变!B去验证A的token。通过后。返回 redirecturl=//xxx?token=验证通过,A直接打开这个redirecturl B继续验证 如果token=验证通过,那么就给他Auth;;login() 直接返回该页面就行了是不

2个月前 评论
sanders 2个月前

感谢各位的积极参与。这个问题解决了。
laravel 控制器中 return response()->json()的response的header中set-cookie有识别的登录的session信息。
不管前端怎么做,只要他下次请求我的网站的时候给请求头中设置这个session信息就好了。

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!