如何使用token实现权限
前端代码参考
{__NOLAYOUT__}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
</script>
</head>
<p style="color: #5a6268;font-size: 30px;font-weight: bold;text-align: center;">登录页面</p>
<form style="width: 30%;margin: 0 auto">
<label>用户名</label>
<input type="text" id="t_name" class="form-control" >
<br>
<label >密码</label>
<input type="password" id="t_pwd" class="form-control">
<br>
<button type="button" class="btn btn-primary">确认登录</button>
</form>
</body>
</html>
<script>
$('.btn').click(function () {
var t_name=$(this).siblings('#t_name').val();
var t_pwd=$(this).siblings('#t_pwd').val();
$.ajax({
"url":'/admin/add/login',
"type":"POST",
"data":{
't_name':t_name,
't_pwd':t_pwd,
'__token__':"{$Request.token}",
},
"dataType":"json",
"success":function (res) {
console.log(res.data);
if(res.code==200){
alert('登录成功');
localStorage.setItem('token',res.data.token);//将token上传到游览器本地化
window.location.href="{:url('admin/add/index')}";
}
},
"error":function (error) {
console.log(error);
}
})
})
</script>
控制器代码参考:
public function login(){
$param=request()->post();
$data = [
't_name' =>$param['t_name'],
't_pwd' =>$param['t_pwd'],
];
$res=stus::loginDo($data);
if(empty($res)){
return json(['code'=>0,'data'=>'','msg'=>'登录失败']);
}else{
$token = Token::createToken($res['t_id']);
$res['token']=$token;
session('token',$token);
$admin=stus::getUserNodeAll($res['t_id']);
// return json($admin);
session('admin',$admin);
return json(['code'=>200,'data'=>$res,'msg'=>'登录成功']);
}
}
public function login(){
$param=request()->post();
$data = [
't_name' =>$param['t_name'],
't_pwd' =>$param['t_pwd'],
];
$res=stus::loginDo($data);
if(empty($res)){
return json(['code'=>0,'data'=>'','msg'=>'登录失败']);
}else{
$token = Token::createToken($res['t_id']);
$res['token']=$token;
session('token',$token);
$admin=stus::getUserNodeAll($res['t_id']);
// return json($admin);
session('admin',$admin);
return json(['code'=>200,'data'=>$res,'msg'=>'登录成功']);
}
}
模型层代码参考:
public static function loginDo($data){
return self::where($data)->find();
}
public static function getUserNodeAll($id){
$field='t_id,t_name,role,p_id,id';
$userNode = self::alias('u')
->field($field)
->join('roles', 'a_id = t_id')
->where('t_id', $id)
->select();
// return $userNode;
return self::getTree($userNode,0);
}
public static function getTree($data,$p_id=0){
$result=[];
if(empty($data)){
return $result;
}
foreach ($data as $key=>$item){
if($item['p_id']==$p_id){
$item['child']=self::getTree($data,$item['id']);
$result[]=$item;
}
}
return $result;die();
}
layout代码参考:
<div class="sidebar-nav">
{foreach $Think.session.admin as $vo}
<a href="#{$vo.id}" class="nav-header collapsed" data-toggle="collapse"><i class="icon-exclamation-sign"></i>{$vo.role}</a>
<ul id="{$vo.id}" class="nav nav-list collapse">
{foreach $vo['child'] as $v}
<li><a >{$v.role}</a></li>
{/foreach}
</ul>
{/foreach}
</div>
{__CONTENT__}
本文来自博客园,作者:鱼祖,转载请注明原文链接:https://www.cnblogs.com/fishn/p/15206317.html

浙公网安备 33010602011771号