• laravel8.5与layuiadmin整合(4)


    三.设置登陆功能

    15.设置路由 /routes/web.php

    // 登陆使用
    Route::group(['prefix' => 'admin'],function() {
        // 登陆页面
        Route::get('/login',[App\Http\Controllers\Admin\LoginController::class, 'showLoginForm'])
            ->name('admin.loginForm');
    
        // 登陆提交页面
        Route::post('/login',[App\Http\Controllers\Admin\LoginController::class, 'login'])->name('admin.login');
    
        // 退出登陆
        Route::get('/logout',[App\Http\Controllers\Admin\LoginController::class, 'logout'])->name('admin.logout');
    });

    16. 安装ui用户验证包

    composer require laravel/ui

    17. 建立以上路由对应控制器和方法
    /app/Http/Controllers/Admin/LoginController.php
    用到的方法可以查看文件 /vendor/laravel/ui/auth-backend/AuthenticatesUsers.php
    文件有各种方法,可重新定义,比如登陆用的是邮箱,现在修为用户名

    namespace App\Http\Controllers\Admin;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Foundation\Auth\AuthenticatesUsers;
    use Illuminate\Http\Request;
    
    class LoginController extends Controller {
    
        use AuthenticatesUsers;
        /**
         * 登陆页面
         * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
         */
        public function showLoginForm() {
            return view('admin.login_register.login');
        }
    
        /**
         * 设置登陆成功后的跳转页
         * @return string
         */
        public function redirectTo(){
            return route('admin.layout');
        }
    
        /**
         * 设置登陆字段
         * @return string
         */
        public function username()
        {
            return 'name';
        }
    
        /**
         * 登陆退出
         * @param Request $request
         * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
         */
        public function logout(Request $request) {
            $this->guard()->logout();
            $request->session()->invalidate();
            return redirect(route('admin.loginForm'));
        }
    }

    18.分别建立上面对应的模板文件
    /resources/views/admin/login_register/login.blade.php
    /resources/views/admin/login_register/base.blade.php
    上面两个文件参考layuiadmin的文件/layuiAdmin/admin/std/dist/views/user/login.html
    此时访问 /admin/login
    即可用上面两个注册好的账号正确登陆

    19.已经添加了用户认证,此时,在路由中,分别加上对应的认证中间件
    比如:上面的后台布局,要用户认证,则修改成如下

    // 后台布局
    Route::group(['prefix' => 'admin','middleware'=>'auth'], function() {
    
        // 后台首页
        Route::get('/',[App\Http\Controllers\Admin\IndexController::class, 'layout'])->name('admin.layout');
    
        // layuiadmin原模板模块 - 控制台
        Route::get('/index',[App\Http\Controllers\Admin\IndexController::class, 'index'])->name('admin.index');
    
        // layuiadmin原模板模块 - 主页一
        Route::get('/index1',[App\Http\Controllers\Admin\IndexController::class, 'index1'])->name('admin.index1');
    
        // layuiadmin原模板模块 - 主页二
        Route::get('/index2',[App\Http\Controllers\Admin\IndexController::class, 'index2'])->name('admin.index2');
    
    });

    20.添加退出功能,以便能正常使用登陆认证功能
    在/resources/views/admin/layout.blade.php添加退出链接

    <dd style="text-align: center;"><a href="">退出</a></dd>
    修改为
    <dd style="text-align: center;"><a href="{{route('admin.logout')}}">退出</a></dd>
    此时登陆和退出,都能正常使用

    21.以上退出之后,当默认访问 /admin时,会报错,说没有找到 Route[login],
    这个是因为中间件
    /app/Http/Middleware/Authenticate.php
    认证中的跳转是这样的

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

    没有定义login相关的命名路由,

    修改中间上面的方法中的路由,定位到已经定义过的命名路由

        protected function redirectTo($request)
        {
            if (! $request->expectsJson()) {
               //  return route('login');
               return route('admin.loginForm');
               
            }
        }
  • 相关阅读:
    Hack The Box——Traverxec
    Hack The Box——AI
    Hack The Box——Json
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    BZOJ1036 树的统计Count
    .net 面试题
    .net 面试题
    .net 面试题
  • 原文地址:https://www.cnblogs.com/lin3615/p/15802944.html
Copyright © 2020-2023  润新知