laravel8.*框架中实现登录接口,前端调用

接口代码
//获取随机数,将随机数存入缓存redis中

public function getRandnumber(){
            $redis=app('redis');
            $num = md5(str_pad(mt_rand(0, 999999), 6, "0", STR_PAD_BOTH));
            $redis->set("sign", $num);
            return response()->json(['code'=>'200','data'=>$num]);

   }

//登录方法

public function login(Request $request) {
        $redis=app('redis');
   	    $name = $request->name;
   	    $password = $request->password;
   	    if(!$name || !$password){
   	    	return response()->json(['res'=>'账户名或密码必填']);
   	    }
        $user = test_user::where('name',$name)->first();
        $pass=$user->password;  // 获取用户表中用户的密码;
        //用户密码拼接缓存中的随机数,和前端传过来的密码进行匹配
        if(!$user || md5($redis->get('sign').$pass) !==$password){
          return response()->json(['code'=>'401','msg'=>'用户名或密码错误']);
        }else {
        //密码匹配成功,生成token,存入缓存,用于用户登录验证
          if(!$redis->exists('api_token'.$user->id)){
          $api_token =uniqid($user->id);
          $redis->setex('api_token'.$user->id,60,$api_token);
          $user->api_token=$api_token;
          if($user->save()){
           // 删除缓存中的随机数
            $redis->del('sign');
            return response()->json(['code'=>200,'data'=>$user]);
          }
          return response()->json(['code'=>1,'msg'=>'失败']);
        }else {
          return response()->json(['code'=>0,'msg'=>'用户已登录']);
        }
       }     
   	}

路由(写于api.php中)

Route::prefix('/admin')->group(function(){
	Route::get('/getrandom',[TestUserController::class,'getRandnumber']);
	Route::post('/login',[TestUserController::class,'login']);
});

前端调用
// h5标签

<div class="loginbox">
    <div class="name"><label for="name">用户名:</label><input type="text" name="name" value=""></div>
    <div class="password"><label for="password">密码:</label><input type="password" name="password" value=""></div>        
    <button onclick="submit()">登录</button>
</div>

js代码

function submit(){
	var nm= $('.name input').val();
	var ps= $('.password input').val();
	var tel = $('.telphone input').val();
	$.ajax({
		type:'GET',
		url:'http://************/api/admin/getrandom',
		success:function(res) {
			if(res.code=='200'){
			random=res.data;	          
			$.ajax({
		            type:'POST',
		            url:'http://********/api/admin/login',
		    data: {
			name: nm,
			telphone:tel,
			password:md5(random+md5(ps))
		},
		success:function(res){
			if(res.code==200){
				localStorage.setItem('token', res.data.api_token);
				localStorage.setItem('user-id',res.data.id);
				location.replace('file:///C:/Users/Mrli/Desktop/test/user.html')
			}
			else if(res.code==0){
				location.replace('file:///C:/Users/Mrli/Desktop/test/user.html')
			}else {
				alert('登录出错');
			}
		},
		error: function(err){
			console.log(err);
		}

	})
			}
		},
		error:function(err){
			console.log(err);
		}

	})
}

一只小菜鸡所写,不喜勿喷***

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值