Ajax 异步登录的时候如何存储 session

前端框架是vue,登录用的ajax,但是无论怎样都好,都登录不了,直接提交表单登录倒是可以存储session。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 32

有无大神啊

6年前 评论
leo
  1. 前后端域名是否一致,有没有跨域问题
  2. 贴代码
6年前 评论

@leo 我这是本地生产环境,没有跨域问题,我所有代码都贴出来了

file

file

file

6年前 评论

@leo 每次都返回登录成功,证明在那个登录方法里面,session是设置成功了,但是在别的方法里面就是获取不了session的值,如果我用的是直接提交表单就可以,ajax就不行,很奇怪。

6年前 评论
leo

route里面是Admin\Login,贴出来的代码是store……

6年前 评论
leo

另外注意一下ajax登录接口的route是否有web这个middleware,默认情况下session机制在web middleware下才开启

6年前 评论

@leo 这是资源路由啊,post就是指向store的

6年前 评论

@leo 我所有路由都放在一个组里了,那个组已经有了 web这个 middleware

6年前 评论
leo

$this->success(xxx)前面是不是少了return?

6年前 评论
leo

我知道了,你的success方法是直接echo的吧。
楼下还是要学习一下用Laravel的方式写代码,你这个代码完全发挥不了Laravel的能力。

6年前 评论

@leo success里面的方回是exit(); 所以不需要 return

6年前 评论
leo

@冰和 所以这个就是问题所在,请按Laravel的写法来

6年前 评论

@leo 所以我就算把这个注释掉 也还是没设置成功

6年前 评论
leo

@冰和 Laravel是通过return response的,请仔细看文档

6年前 评论

@leo 不不不,我现在不管这个 response 我现在的情况是,session

6年前 评论
leo

不要通过echo来输出

6年前 评论
leo

@冰和 我可以很负责任的说session的问题根源就在response,信不信由你

6年前 评论

@leo 我换了 return 还是不行

6年前 评论

@leo 大兄弟 不靠谱。。

6年前 评论
leo

@冰和 贴代码。保证是你return的姿势不对。

6年前 评论

@leo 你瞅瞅 哪里不对

6年前 评论
leo

@冰和 这个return是对的,我过于武断了 :cry:

ajax请求的返回头截图看看?

6年前 评论

@leo 不用了 我改成

file

6年前 评论

@leo 然后就可以了

6年前 评论
leo

@冰和 那你试试看切回原来的exit方式而不用return返回,session还能在么,记得操作前先清cookie

6年前 评论
leo

我发现真的问题在哪了……session函数用法错了……

function session($key = null, $default = null)

要给session赋值应该是session(['key' => $value]),以前还真没注意。

打自己脸

6年前 评论

@leo
你的是什么版本啊,我的5.4 可以array|srting
file

6年前 评论
leo

@冰和 看他的代码实现,如果是传入两个参数则代表从session里取数据,你代码里是

session('UID', $user_id)

是代表从session里取uid而不是写入session。

不过我现在很好奇为啥你用表单提交就正常?

6年前 评论

@leo 这个啊,其实我之前是用的 $request->session()->put('UID',$user_id);

6年前 评论

API是无状态的,session在web中间件里才有,你可以在前端保存一个key值在cookie中或storage,请求的时候根据key值去取登录信息,比如存在Redis中。

6年前 评论

笑死了。。。。

6年前 评论

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