HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
</head>
<body>
<div style="width: 300px">
<div class="form-group">
<label for="name">名称</label>
<input type="text" class="form-control account" name="account" >
</div>
<div class="form-group">
<label for="name">密码</label>
<input type="password" class="form-control password" name="password" >
</div>
<input type="hidden" name="__token__" value="{$Request.token}" />
<input type="button" id="login" value="立即登录">
</div>
</body>
</html>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$('#login').click(function (){
var account =$('.account').val();
var password=$('.password').val();
$.ajax({
url:'/ajax/login/loginSuccess',
type:'POST',
data:{
account:account,
password:password,
__token__:"{$Request.token}",
},
dataType:'json',
success:function (res){
console.log(res.data.token);
if (res.code==500){
alert('账号错误')
return false
}
if (res.code==501){
alert('密码错误')
}
if (res.code==200){
alert('登录成功');
//将用户res里的Token存入在本地
localStorage.setItem('token',res.data.token);
location.href='/ajax/ajax/index?token='+res.data.token;
}
}
}) }) </script>

控制器代码:

<?php

namespace app\ajax\controller;

use app\ajax\model\AjaxModel;
use think\Controller;
use think\Session;
use tools\jwt\Token; class Login extends Controller
{
//展示登录页面
public function login()
{
return view();
} public function loginSuccess()
{
$params = $this->request->post();
//验证user表是否与用户输入的信息向匹配
$data = AjaxModel::getLogininfo($params);
if ($params['account'] != $data['username']) {
return getJsonData(500,'no','');
}
if ($params['password'] != $data['userpassword']) {
return getJsonData(501,'no','');
}
//生成token令牌
$token = Token::createToken($data['id']);
//将令牌放在session中
$data['token'] = $token;
Session::set('token', $token);
//查看用户权限
$node = AjaxModel::getUserNodeALL($data['id']);
//模型层级完成后将数据记录到session中
Session::set('node', $node);
return getJsonData(200, 'success', $data);
}
}

模型代码:

<?php

namespace app\ajax\model;

use think\Model;

class AjaxModel extends Model
{
//查询login用户表
protected $table = 'user'; public static function getLogininfo($params)
{
return self::where('username', $params['account'])
->find();
}
//查询用户对应的权限
public static function getUserNodeALL($id)
{
//进行关联
$field = 'user.username,role.role_name,node.*';
$userNode=self::field($field)
->join('user_role', 'user.id=user_role.uid')
->join('role', 'user_role.rid=role.id')
->join('role_node', 'role.id=role_node.rid')
->join('node', 'role_node.nid=node.id')
->where('user.id', $id)
->select();
return self::getTree($userNode,0);
}
//展示层级权限
public static function getTree($data,$pid=0)
{
//定义一个空的权限数组
$result=[];
if (empty($data)){
return $result;
}
foreach ($data as $k=>$v){
if ($v['pid']==$pid){//找父级 ,数据库pid=0;对应的分别是id=5,id=8;
$v['child']=self::getTree($data,$v['id']); //id=5,id=8;
$result[]=$v;
}
}
return $result;
} }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>后台管理系统</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link href="__STATIC__/userLayoutCss/css/main.css" rel="stylesheet" type="text/css"/>
<link href="__STATIC__/userLayoutCss/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
<link href="__STATIC__/userLayoutCss/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css"/>
<script src="__STATIC__/userLayoutCss/js/jquery-1.8.1.min.js"></script>
<script src="__STATIC__/userLayoutCss/js/bootstrap.min.js"></script>
</head>
<body>
<!-- 上 -->
<div class="navbar">
<div class="navbar-inner">
<div class="container-fluid">
<ul class="nav pull-right">
<li id="fat-menu" class="dropdown">
<a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-user icon-white"></i> admin
<i class="icon-caret-down"></i>
</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="javascript:void(0);">修改密码</a></li>
<li class="divider"></li>
<li><a tabindex="-1" href="javascript:void(0);">安全退出</a></li>
</ul>
</li>
</ul>
<a class="brand" href="index.html"><span class="first">后台管理系统</span></a>
<ul class="nav">
<li class="active"><a href="javascript:void(0);">首页</a></li>
<li><a href="javascript:void(0);">系统管理</a></li>
<li><a href="javascript:void(0);">权限管理</a></li>
</ul>
</div>
</div>
</div>
<!-- 左 -->
<div class="sidebar-nav">
{foreach $Think.session.node as $vo}
<a href="text" class="nav-header collapsed" data-toggle="collapse"><i class="icon-exclamation-sign"></i>{$vo.node_name}</a>
<ul id="text" class="nav nav-list collapse in">
{foreach $vo['child'] as $k=>$v}
<li><a href="{$v.node_controller.'/'.$v.node_action}?token={$Think.session.token}">{$v.node_name}</a></li>
{/foreach}
</ul>
{/foreach}
</div>
<!-- 右 -->
<div class="content">
<div class="header">
<h1 class="page-title">商品列表</h1>
</div> <div class="well">
<!-- search button -->
<form action="" method="get" class="form-search">
<div class="row-fluid" style="text-align: left;">
<div class="pull-left span4 unstyled">
<p> 商品名称:<input class="input-medium" name="" type="text"></p>
</div>
</div>
<button type="submit" class="btn">查找</button>
<a class="btn btn-primary" href="#">新增</a>
</form>
</div>
<div class="well">
<!-- table -->
<table class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品数量</th>
<th>商品logo</th>
<th>添加时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr class="success">
<td>1</td>
<td><a href="javascript:void(0);">宏辉果蔬 苹果 烟台红富士 12枚75mm 单果约170-190g 总重4.2斤</a></td>
<td>23.90</td>
<td>100</td>
<td><img src="img/goods01_thumb.jpg"></td>
<td>2017-04-01 08:00:00</td>
<td>
<a href="javascript:void(0);"> 编辑 </a>
<a href="javascript:void(0);" onclick="if(confirm('确认删除?')) location.href='#'"> 删除 </a>
</td>
</tr>
<tr class="error">
<td>2</td>
<td><a href="javascript:void(0);">百草味 坚果零食干果 内含开果器 夏威夷果奶油味200g/袋</a></td>
<td>16.90</td>
<td>300</td>
<td><img src="img/goods02_thumb.jpg"></td>
<td>2017-04-01 08:00:00</td>
<td>
<a href="javascript:void(0);"> 编辑 </a>
<a href="javascript:void(0);" onclick="if(confirm('确认删除?')) location.href='#'"> 删除 </a>
</td>
</tr>
<tr class="warning">
<td>3</td>
<td><a href="javascript:void(0);">玖原农珍 广西百香果 3斤水果 大果约80-90g </a></td>
<td>35.80</td>
<td>100</td>
<td><img src="img/goods03_thumb.jpg"><</td>
<td>2017-04-01 08:00:00</td>
<td>
<a href="javascript:void(0);"> 编辑 </a>
<a href="javascript:void(0);" onclick="if(confirm('确认删除?')) location.href='#'"> 删除 </a>
</td>
</tr>
<tr class="info">
<td>4</td>
<td><a href="javascript:void(0);">三只松鼠 坚果炒货 零食奶油味 碧根果225g/袋</a></td>
<td>22.90</td>
<td>300</td>
<td><img src="img/goods04_thumb.jpg"></td>
<td>2017-04-01 08:00:00</td>
<td>
<a href="javascript:void(0);"> 编辑 </a>
<a href="javascript:void(0);" onclick="if(confirm('确认删除?')) location.href='#'"> 删除 </a>
</td>
</tr>
</tbody>
</table>
<!-- pagination -->
<div class="pagination">
<ul>
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</div> <!-- footer -->
<footer>
<hr>
<p> 2017 <a href="javascript:void(0);" target="_blank">ADMIN</a></p>
</footer>
</div>
</body>
</html>

权限5表:

1.用户表user:

2.用户角色关联表user_role:

3:角色表role:

4:角色权限表role_node:

5:权限表 node :

5张表的关系图解

七张表关系图

sql语句:

sql语句:

SELECT
*
FROM
`user`
JOIN user_role ON `user`.id = user_role.uid
join role on role.id = user_role.rid
JOIN role_node on role_node.rid = role.id
JOIN node on node.id = role_node.nid
where `user`.id =3

tp5用户id登录进行权限设置的更多相关文章

  1. MYSQL语句:创建、授权、查询、修改、统计分析等 一 用户的创建、权限设置、删除等

    MYSQL语句:创建.授权.查询.修改.统计分析.. 一.用户的创建.权限设置.删除等 1.首先链接MySQL操作 连接格式:mysql -h 主机地址 -u 用户名 -p 用户密码 (注-u与roo ...

  2. Oracle中用户的创建和权限设置

    权限: CREATE SESSION --允许用户登录数据库权限 CREATE TABLE --允许用户创建表权限 UNLIMITED TABLESPACE --允许用户在其他表空间随意建表 角色: ...

  3. 实际用户ID,有效用户ID,保存的设置用户ID

    Unix中常见的几个概念,下面做一个解释. 首先需要明确一点,这几个概念都是和进程相关的. real user ID表示的是实际上进程的执行者是谁,effective user ID主要用于校验该进程 ...

  4. mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解

    一.mariadb安装 1.配置mariadb源: [root@ren7 ~]# vim /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB ...

  5. MYSQL语句:创建、授权、查询、修改、统计分析等 二 用户的创建、权限设置、删除

    接着上面一的内容 4.设置更改用户密码 命令格式:SET PASSWORD FOR 'username'@'host'=PASSWORD('newpassword'); 如果是当前登录用户用:SET ...

  6. SQL Server新增用户并控制访问权限设置。

    新增用户: 一.进入数据库:[安全性]—>[登录名]—>[新建登录名] 二.在常规选项卡中.如图所示,创建登录名.注意设置默认的数据库. 三.在[用户映射]下设置该用户所能访问的数据库.并 ...

  7. php apache用户写文件夹权限设置

    php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件 ...

  8. 设置用户ID和设置组ID

    与一个进程关联的ID有6个或更多,如下图所示: 与每个进程相关联的用户ID和组ID 实际用户ID 实际组ID 我们实际是谁 有效用户ID 有效组ID 附加组ID 用于文件访问权限检索 保存的设置用户I ...

  9. linux系统学习笔记:无死角理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID

    一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用 ...

随机推荐

  1. AT2164 [AGC006C] Rabbit Exercise

    首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...

  2. 密码学之PRP/PRF转换引理

    本文将介绍密码学中的PRF.PRP等相关概念,并介绍 PRP/PRF 转换引理及其证明,希望读完本文后,你能对现代密码学中这几个基础概念有所了解. 在开始本文前,希望你有如下预备知识: 现代密码学是怎 ...

  3. Collection和Map集合

    前言 集合的长度是可变的.集合存储的都是对象.而且对象的类型可以不一致. Collection集合和Map集合是所有集合的父接口. Collection接口定义 体系结构的根接口,代表一组对象,有两个 ...

  4. where子句和having子句区别

    感谢大佬:https://blog.csdn.net/XiaopinOo/article/details/78305008 where子句和having子句的区别: 1.where  不能放在grou ...

  5. java-swing-事件监听-焦点监听器

    感谢大佬:https://blog.csdn.net/weixin_44512194/article/details/93377551 开始不知道焦点是啥,其实就是打字的时候,这个一闪一闪的竖线. 与 ...

  6. nodejs 文件上传服务端实现

    前段时间在做个人项目的时候,用到了nodejs服务端上传文件,现在回头把这个小结一下,作为记录. 本人上传文件时是基于express的multiparty,当然也可以使用connect-multipa ...

  7. Python--变量和简单数据类型

    Python--变量和简单数据类型 目录 Python--变量和简单数据类型 一.Python脚本运行过程 二.变量 1. 变量的命名和使用 2. Python关键字和内置函数 2.1 Python关 ...

  8. 通过安装HomeBrew来安装Python3

    首先说什么是HomeBrew? 下面引用简书上一个博客的解释:(博客链接:http://www.jianshu.com/p/d229ac7fe77d) 为什么要使用Homebrew Mac OS X是 ...

  9. Redis 源码简洁剖析 12 - 一条命令的处理过程

    命令的处理过程 Redis server 和一个客户端建立连接后,会在事件驱动框架中注册可读事件--客户端的命令请求.命令处理对应 4 个阶段: 命令读取:对应 readQueryFromClient ...

  10. 矩阵LU分解

    有如下方程组 ,当矩阵 A 各列向量互不相关时, 方程组有位移解,可以使用消元法求解,具体如下: 使用消元矩阵将 A 变成上三角矩阵 , , 使用消元矩阵作用于向量 b,得到向量 c,, , Ax=b ...