① 创建管理员模型
php think make:model admin@LoginModel
② 设置路由
Route::group('goods',function (){
Route::resource('blog','Login');
})->middleware(\app\admin\middleware\Login::class);
创建中间件
# 创建登录验证中间件
php think make:middleware adminpai@Login
检测中间件
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
*/
public function handle($request, \Closure $next)
{
$token = Token::getRequestToken();
if (!$token) {
return fail('2001','请先登录');
}
$user_id = Token::getUserId($token);
if ($user_id) {
return $next($request);
} else {
return fail('2001','请先登录');
}
}
③ 封装密码加密函数
注意:后台管理员表中 初始的管理员密码,需要自己加密一个初始密码,更新到数据表
使用自定义的密码加密函数:
使用加密函数对一个自定义的初始密码进行加密输出。
效果:
将此加密后的密码,复制,修改到passwod字段。
④ 登录功能
控制器
//登录接口
public function login(){
//测试Token工具类
//生成token
//$token = Token::getToken(200);
//dump($token);
//解析token 得到用户id
//$user_id = Token::getUserId($token);
//dd($user_id);
try {
$param = input();
Validate(\app\admin\validate\Login::class)->check($param);
$username = input('username');
$obj = new Loginmodel();
$res = $obj->login($username);
if ($res){
if ($res->password == $param['password']){
return success(200,'ok',['token'=>Token::getToken($res->id)]);
}else{
return fail(2001,'密码错误');
}
}else{
abort(2001,'账号错误');
}
}catch(ValidateException $e) {
// 验证失败 输出错误信息
return fail(2001,$e->getError());
} catch (\Exception $e) {
// 这是进行异常捕获
return fail(2001,$e->getMessage());
}
}
模型
class Loginmodel extends Model
{
protected $table = 'admin';
public function login($username){
return $this->where('username',$username)->find();
}
}