接口代码
//获取随机数,将随机数存入缓存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);
}
})
}
一只小菜鸡所写,不喜勿喷***