为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 laravel 6 在我的软件包中使用身份验证进行自定义防护?

如何使用 laravel 6 在我的软件包中使用身份验证进行自定义防护?

PHP
炎炎设计 2022-09-12 11:10:22
我正在尝试使用表格通过拉维尔包进行身份验证。在项目目录中,我在配置/身份验证中添加了警卫.phpadminsadmin'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => App\User::class,        ],        'admins' => [            'driver' => 'eloquent',            'model' => App\Admin::class,        ],        // 'users' => [        //     'driver' => 'database',        //     'table' => 'users',        // ],    ],在防护阵列中    'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',            'hash' => false,        ],        'admin' => [            'driver' => 'session',            'provider' => 'admins',        ],    ],以下是我在帕卡格内部的登录控制器class LoginController extends Controller{   use AuthenticatesUsers;   protected $redirectTo = '/admin/dashboard';   protected function redirectTo()   {         return '/admin/dashboard';   }   public function __construct()   {       $this->middleware('guest')->except('logout');   }   public function login(Request $request)   {          if(Auth::guard('admin')->attempt($request->only('email','password'), true)){           return redirect()               ->intended(route('dashboard'))               ->with('status','You are Logged in as Admin!');       }   }}以下是我的仪表板控制器class DashboardController extends Controller{    public function __construct()    {        /* dd(Auth::check()); */ //return false : just want to show you          $this->middleware('auth:admin');    }    public function index()    {        return view('xyz::dashboard');    }}在我的模型中,以下脚本就在那里Admin.phpnamespace App;class Admin extends \ABC\xyz\App\Models\Admin{}当我尝试登录时,在提交有效详细信息后,它不会将我重定向到仪表板,没有任何反应。另外,当我尝试强行打开/仪表板时,它会带我进入登录页面。同样在登录尝试之后,当我尝试它返回时,但在构造函数中返回同样的事情。以同样的方式返回用户的信息,同时返回它。我不知道我错过了什么,在哪里错过了一些东西。Auth::check()truefalsedashboardController.phpAuth::guard('admin')->user()dashboardController.phpnull我想请你指导我。我将不胜感激。
查看完整描述

4 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

中间件 () 负责重定向经过身份验证的用户。guest\App\Http\Middleware\RedirectIfAuthenticated

使用中间件时,您必须通过身份验证防护才能按如下方式使用:

guest:guard

示例:在登录控制器构造函数中,使用

$this->middleware('guest:admin')->except('logout');

而不是$this->middleware('guest')->except('logout');


查看完整回答
反对 回复 2022-09-12
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

在仪表板控制器中使用。(返回经过身份验证的管理员)auth('admin')->user()



查看完整回答
反对 回复 2022-09-12
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

使用前缀定义路由时,路由名称将如下所示,URL 将类似于 。所以在这里你可以试试这个prefix.nameprefix/url


Route::group([    

        'namespace' => $namespace,

        'middleware' => ['web'], 

        'prefix' => 'admin'

    ], function () {

        Route::get('login', function(){

            return view('xyz::auth.login');

        })->name('login');


        Route::post('login', 'Auth\LoginController@login')->name('tryForLogin');

});


Route::group(['namespace' => $namespace,'prefix' => 'admin','middleware' => 'auth'], function () {

    Route::get('dashboard', function(){

        return view('xyz::dashboard');

    })->name('dashboard');

});

所有组都以“admin”为前缀,但是有一些路由或页面可以在登录时访问。


查看完整回答
反对 回复 2022-09-12
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

是用于定义路由终结点前缀的选项。您正在寻找该选项。prefixas


// gives you routes:

// GET /admin/login named "admin.login" with middleware "web"

// POST /admin/login named "admin.tryForLogin" with middleware "web"

Route::group([    

        'namespace' => $namespace,

        'middleware' => ['web'], 

        'prefix' => 'admin',

        'as' => 'admin.'

    ], function () {

        Route::get('login', function() {

            return view('xyz::auth.login');

        })

        ->name('login');


        Route::post('login', 'Auth\LoginController@login')->name('tryForLogin');

    }

);


// gives you routes:

// GET /admin/dashboard named "admin.dashboard" with middleware "auth"

Route::middleware(['auth'])->group(function () {

    Route::get('/admin/dashboard', function(){

        return view('xyz::dashboard');

    })

    ->name('admin.dashboard');

});

在代码更改后运行。php artisan optimize:clear


查看完整回答
反对 回复 2022-09-12
  • 4 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信