thinkphp5 登陆以后 session 就失效了

2020-06-30 20:17:09 +08:00
 madpecker009

描述下情况吧,在登录的时候保存 session (图一),有一个 Base 控制器(图二),除了登录的控制器其余的控制器全部 extends Base 。在 Index 的时候 index()方法 session 还是存在的。在 welcome 方法中就没有了。 现在至少有两个项目出现 这种情况了。真是不知道怎么办了 求大佬们解答。求解释!!!

2335 次点击
所在节点    PHP
16 条回复
RickyC
2020-06-30 23:46:19 +08:00
把 welcome() 里面内容清了, 也变成 return $this->fetch() 呢?
madpecker009
2020-07-01 08:32:35 +08:00
@RickyC 沒有用的 还是会循环这个流程
zarte
2020-07-01 09:39:34 +08:00
看下 index 与 welcome 的 url 是不是同个域
ben1024
2020-07-01 12:32:04 +08:00
可以排查下有没有 session_start 的操作
madpecker009
2020-07-01 13:35:03 +08:00
@ben1024 确定是开启的 但是就是这样 我也不知道为啥了
madpecker009
2020-07-01 13:36:03 +08:00
@zarte 是的 但是状态码是 302
维基百科的解释:302 Found,原始描述短语为 Moved Temporarily,是 HTTP 协议中的一个状态码(Status Code)。可以简单的理解为该资源原本确实存在,但已经被临时改变了位置;换而言之,就是请求的资源暂时驻留在不同的 URI 下[1],故而除非特别指定了缓存头部指示,该状态码不可缓存。
madpecker009
2020-07-01 13:38:17 +08:00
@zarte http://a2.learnku.top/manager

这是测试环境的 你可以 debug 下。谢谢
qwertyzzz
2020-07-01 13:53:32 +08:00
welcome 整个都删了 重新写个 index1 呢
madpecker009
2020-07-01 14:00:11 +08:00
@qwertyzzz 不可以的。。。之前在我本地就有这个 bug 。后来来了新项目 就没管 第二天自己好了。。线上测试环境的却怎么也不好,。。。
http://a2.learnku.top/manager/account/login.html
线上地址
jfhy0901
2020-07-01 14:17:30 +08:00
我试了一下, 显示登陆成功,实际上没有保存登陆状态。检查一下 session 是否开启,检查一下是否保存正常等,包括各种日志等信息,细致排查具体原因。实在没办法请换 JWT 。
madpecker009
2020-07-01 14:34:15 +08:00
@jfhy0901 害 session 确定是开启的,在 index 控制器的 index 方法还是能读取出来 session 的。然后再其他的方法里面就读取不到了。就很让人迷惑。实在不行就像你说的 换 jwt 。
MorningBOBO
2020-07-01 16:01:50 +08:00
额,文件权限上呢
casper13
2020-07-01 16:21:07 +08:00
贴一下 account/login 代码和 TP5 的完整配置项
madpecker009
2020-07-02 08:33:30 +08:00
```
/**
* 用户登录
*/
public function login(Request $request)
{
// 用户已经登陆直接跳转到首页
$admin_info = Session::get('admin_info');
if(!empty($admin_info)){
$this->redirect('index/index');
}
if($request->isAjax())
{
$phone = $request->param('phone','','trim,strip_tags,htmlspecialchars');
$password = $request->param('password','','trim,strip_tags,htmlspecialchars');
$captcha = $request->param('captcha','','trim,strip_tags,htmlspecialchars');
if(!captcha_check($captcha)){
return responseJson('400', '验证码错误');
}
$admin_info = \app\manager\model\Admin::alias('a')
->join('role r', 'a.role = r.id')
->where('phone', $phone)
->field('a.*,r.role_name,auth_group')
->find();
if(!$admin_info){
return responseJson('400','账户信息不存在');
}
if($admin_info['is_delete'] || $admin_info['is_freeze']){
return responseJson('400','账号异常');
}
if(!password_verify($password,$admin_info['password'])){
return responseJson('400','账号密码不匹配');
}else{
$data = [
'login_ip' => get_real_ip(),
'login_time'=>time()
];
// 更新登录的 ip 地址和登录时间
$res = Db::name('admin')->where('phone',$phone)->data($data)->update();
if(!$res){
return responseJson('500','服务器错误');
}
unset($admin_info['password']);
$admin_info->auth_rule = \app\manager\model\Admin::getUserAuth($admin_info->auth_group);
Session::set('admin_info',$admin_info);
return responseJson('200','登陆成功');
}
}else{
return $this->fetch();
}
}
/**
* 退出登录
* @param
* @return
*/
public function logout()
{
Session::delete('admin_info');
return $this->redirect('account/login');
}
```
```
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// +----------------------------------------------------------------------
// | 会话设置
// +----------------------------------------------------------------------

return [
'id' => '',
// SESSION_ID 的提交变量,解决 flash 上传跨域
'var_session_id' => '',
// SESSION 前缀
'prefix' => 'think',
// 驱动方式 支持 redis memcache memcached
'type' => '',
// 是否自动开启 SESSION
'auto_start' => true
];
```
hbolive
2020-07-02 08:52:47 +08:00
TP5.1,我用的 session 助手函数,没啥问题,要不试试?
madpecker009
2020-07-02 08:58:45 +08:00
@hbolive 我也试过 就是不行 还有一个模块 代码基本都是 copy 的 一点问题都没有
就是这个 manager 模块出现问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/686035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX