问答 / 1 / 32 / 创建于 8年前
前端框架是vue,登录用的ajax,但是无论怎样都好,都登录不了,直接提交表单登录倒是可以存储session。
有无大神啊
@leo 我这是本地生产环境,没有跨域问题,我所有代码都贴出来了
@leo 每次都返回登录成功,证明在那个登录方法里面,session是设置成功了,但是在别的方法里面就是获取不了session的值,如果我用的是直接提交表单就可以,ajax就不行,很奇怪。
route里面是Admin\Login,贴出来的代码是store……
另外注意一下ajax登录接口的route是否有web这个middleware,默认情况下session机制在web middleware下才开启
@leo 这是资源路由啊,post就是指向store的
@leo 我所有路由都放在一个组里了,那个组已经有了 web这个 middleware
$this->success(xxx)前面是不是少了return?
我知道了,你的success方法是直接echo的吧。 楼下还是要学习一下用Laravel的方式写代码,你这个代码完全发挥不了Laravel的能力。
@leo success里面的方回是exit(); 所以不需要 return
@冰和 所以这个就是问题所在,请按Laravel的写法来
@leo 所以我就算把这个注释掉 也还是没设置成功
@冰和 Laravel是通过return response的,请仔细看文档
@leo 不不不,我现在不管这个 response 我现在的情况是,session
不要通过echo来输出
@冰和 我可以很负责任的说session的问题根源就在response,信不信由你
@leo 我换了 return 还是不行
@leo 大兄弟 不靠谱。。
@冰和 贴代码。保证是你return的姿势不对。
@leo
@leo 你瞅瞅 哪里不对
@冰和 这个return是对的,我过于武断了 :cry:
ajax请求的返回头截图看看?
@leo 不用了 我改成
@leo 然后就可以了
@冰和 那你试试看切回原来的exit方式而不用return返回,session还能在么,记得操作前先清cookie
我发现真的问题在哪了……session函数用法错了……
function session($key = null, $default = null)
要给session赋值应该是session(['key' => $value]),以前还真没注意。
session(['key' => $value])
打自己脸
@leo 你的是什么版本啊,我的5.4 可以array|srting
@冰和 看他的代码实现,如果是传入两个参数则代表从session里取数据,你代码里是
session('UID', $user_id)
是代表从session里取uid而不是写入session。
不过我现在很好奇为啥你用表单提交就正常?
@leo 这个啊,其实我之前是用的 $request->session()->put('UID',$user_id);
$request->session()->put('UID',$user_id);
API是无状态的,session在web中间件里才有,你可以在前端保存一个key值在cookie中或storage,请求的时候根据key值去取登录信息,比如存在Redis中。
笑死了。。。。
我要举报该,理由是:
有无大神啊
@leo 我这是本地生产环境,没有跨域问题,我所有代码都贴出来了
@leo 每次都返回登录成功,证明在那个登录方法里面,session是设置成功了,但是在别的方法里面就是获取不了session的值,如果我用的是直接提交表单就可以,ajax就不行,很奇怪。
route里面是Admin\Login,贴出来的代码是store……
另外注意一下ajax登录接口的route是否有web这个middleware,默认情况下session机制在web middleware下才开启
@leo 这是资源路由啊,post就是指向store的
@leo 我所有路由都放在一个组里了,那个组已经有了 web这个 middleware
$this->success(xxx)前面是不是少了return?
我知道了,你的success方法是直接echo的吧。
楼下还是要学习一下用Laravel的方式写代码,你这个代码完全发挥不了Laravel的能力。
@leo success里面的方回是exit(); 所以不需要 return
@冰和 所以这个就是问题所在,请按Laravel的写法来
@leo 所以我就算把这个注释掉 也还是没设置成功
@冰和 Laravel是通过return response的,请仔细看文档
@leo 不不不,我现在不管这个 response 我现在的情况是,session
不要通过echo来输出
@冰和 我可以很负责任的说session的问题根源就在response,信不信由你
@leo 我换了 return 还是不行
@leo 大兄弟 不靠谱。。
@冰和 贴代码。保证是你return的姿势不对。
@leo
@leo 你瞅瞅 哪里不对
@冰和 这个return是对的,我过于武断了 :cry:
ajax请求的返回头截图看看?
@leo 不用了 我改成
@leo 然后就可以了
@冰和 那你试试看切回原来的exit方式而不用return返回,session还能在么,记得操作前先清cookie
我发现真的问题在哪了……session函数用法错了……
function session($key = null, $default = null)要给session赋值应该是
session(['key' => $value]),以前还真没注意。打自己脸
@leo

你的是什么版本啊,我的5.4 可以array|srting
@冰和 看他的代码实现,如果是传入两个参数则代表从session里取数据,你代码里是
session('UID', $user_id)是代表从session里取uid而不是写入session。
不过我现在很好奇为啥你用表单提交就正常?
@leo 这个啊,其实我之前是用的
$request->session()->put('UID',$user_id);API是无状态的,session在web中间件里才有,你可以在前端保存一个key值在cookie中或storage,请求的时候根据key值去取登录信息,比如存在Redis中。
笑死了。。。。