开发笔记:手动搭建系统后台-认证用户

新手慢慢学习中,把开发过程中遇到的问题及解决办法记录下来。

Laravel版本:Laravel5.7

首先在 config/auth.php 文件中注册相应的看守器 Guard 与服务提供者 providers

'guards' => [
        'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin\AdminUser::class,
    ],
],

在路由中使用路由组Route::group()与路由中间件对用户进行限制

Route::group(['middleware'=>'auth:admin'],function (){
    //
});

然后在控制器中通过访问指定的看守器实例来进行身份验证

if (Auth::guard('admin')->attempt($data)) {
    //
}

注销登录

Auth::guard('admin')->logout();
return redirect('/admin/login');

此时会出现问题,logout()默认会去数据库中清除remember_token,但建立后台数据表没有建立remember_token字段。解决办法:在AdminUser.php模型文件中重写$rememberTokenName属性为空

protected $rememberTokenName = '';

更改未认证用户直接通过get请求访问后台页面时自动跳转页面路径

默认的跳转,是在App/Http/Middleware/Authenticate redirectTo方法中实现的:

    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }

更改默认跳转删掉上述的App/Http/Middleware/Authenticate redirectTo方法,在App/Exceptions/Handler中添加unauthenticated方法,通过AuthenticationException能拿到当前guard,通过判断guard进行相应的跳转:

……
use Illuminate\Auth\AuthenticationException;
……
protected function unauthenticated($request, AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['error' => 'Unauthenticated.'], 401);
    }
    //修改前后台未登录跳转页面
    if (in_array('admin',$exception->guards())){
        return redirect('/admin/login');
    }
    return redirect()->guest(route('login'));
}

1

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!