用户发布信息如何带上当前的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 里面增加

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

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

生成代码最终如下
//权限检测 禁止普通管理员 操作非当前用户发布的信息
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'));