用户id登录进行权限设置

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;
    }


}

用户id登录进行权限设置

 

 

 权限5表:

1.用户表user:

用户id登录进行权限设置

 

 2.用户角色关联表user_role:

用户id登录进行权限设置

 

 3:角色表role:

用户id登录进行权限设置

 

 4:角色权限表role_node:

用户id登录进行权限设置

 

 5:权限表 node :

用户id登录进行权限设置

 

 

5张表的关系图解

用户id登录进行权限设置

 

 

七张表关系图

用户id登录进行权限设置

sql语句:

用户id登录进行权限设置

 

 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

 

用户id登录进行权限设置

上一篇:前端 跨站脚本(XSS)攻击的一些问题,解决


下一篇:封神台靶场-宽字节注入