用户发布信息如何带上当前的session,并且只显示当前用户发布的信息

普通管理员或者生成的应用后台 用户发布信息时带上当前session  只能看到自己的信息  

第一种:总后台的用户发布自己的信息 

首先添加一个session字段 注意字段名必须为 user_id  因为后台用户登录表的 主键id为user_id 该信息登录时已经写入了session(字段必须设置可搜索,可录入)

特别强调:设置session字段 字段要保证后台session数组有字段名称对应的键值

总后台写入session的字段如下:

//数据存储session
$userInfo = [
        'username'    => $ret['data']['group_name'].'-'.$ret['data']['name'],
	'userid'      => $ret['data']['user_id'],
	'user_id'    => $ret['data']['user_id'],
        'status'     => $ret['data']['status'],
	'group_status'  => $ret['data']['group_status'],
	'nodes'       => $access,
	'role'      => $ret['data']['role'],
 ];

如需设置其他session值 可以在 admin/service/AuthService.php 里面增加

5de8ab16156b2.png

然后在添加方法绑定user_id 这个字段

5de8aba00550b.png

那么添加数据时当前用户的 session会被提交写入数据局 (最终效果如下)

5de8ac5d3dc16.png

生成代码最终如下

//权限检测 禁止普通管理员 操作非当前用户发布的信息
function initialize(){
		if(in_array($this->request->action(),['updateExt','update','delete','view'])){
			$id = $this->request->param('id','','intval');
			$ids = $this->request->param('ids','','intval');
			if($id){
				$info = LinkDb::getInfo($id);
				if(session('admin.role') <> 1 && $info['user_id'] <> session('admin.user_id')) $this->error('你没有操作权限');
			}
			if($ids){
				foreach(explode(',',$ids) as $v){
					$info = LinkDb::getInfo($v);
					if(session('admin.role') <> 1 && $info['user_id'] <> session('admin.user_id')) $this->error('你没有操作权限');
				}
			}
		}
	}
	/*友情链接*/
	function index(){
		if (!$this->request->isAjax()){
			return $this->display('index');
		}else{
			$limit  = $this->request->post('limit', 0, 'intval');
			$offset = $this->request->post('offset', 0, 'intval');
			$page   = floor($offset / $limit) +1 ;

			$where['title'] = $this->request->param('title', '', 'strip_tags,trim');
			//超级管理员看到所有的信息 普通管理员只能看到自己发布的信息
			if(session('admin.role') <> 1){
				$where['user_id'] = session('admin.user_id');
			}

			$limit = ($page-1) * $limit.','.$limit;
			$field = '';
			$orderby = '';

			try{
				$res = LinkService::pageList(formatWhere($where),$limit,$field,$orderby);
				$list = $res['list'];
			}catch(\Exception $e){
				exit($e->getMessage());
			}

			$data['rows']  = $list;
			$data['total'] = $res['count'];
			return json($data);
		}
	}


第二种:生成的应用后台用户发布自己的信息

同上面操作一样 只是 session字段 不再设置为 user_id  而是设置为登录模块的 主键id  其它操作同上

如需查看当前应用写入了 那些session 可以直接输出 例如我们创建了一个supplier的应用 可以直接如下查看 :

print_r(session('supplier'));