【问题标题】:Auth middleware optional in LaravelLaravel 中可选的身份验证中间件
【发布时间】:2021-08-02 08:55:28
【问题描述】:

我有我的控制器ExampleController

class ExampleController extends Controller
{
    function __construct()
    {
        $this->middleware('auth:student')->only(['store', 'update', 'destroy']);
    }

    public function index()
    {
        if(CheckUser::student()) {
            dd("Is student");
        }
        dd("Isn't student");
    }

    /**
     * Another method's not relevant.
     **/
}

如果是学生,我正在尝试添加一些逻辑。 但是有一个问题,如果我设置了中间件,我只能访问:Auth::user()。但是这个具体方法不用登录也可以访问。

我的问题

是否可以创建一个不需要的中间件,如果登录则获取用户信息?

注意:我正在使用具有多重身份验证的 Laravel 护照。

【问题讨论】:

    标签: php laravel laravel-passport laravel-middleware laravel-authentication


    【解决方案1】:

    如果您想保护控制器中的特定方法并忽略同一控制器中的其他方法

    您可以尝试在路由文件(api.php 或 web.php)上保护您的端点,而不是在构造函数上

    //protected routes
    Route::group(['middleware' => 'auth:api'], function () {
        Route::post('customer/picture/add', 'Mobile\AuthController@addProfilePicture');
        Route::post('customer/phone/update', 'Mobile\AuthController@updatePhoneNumber');
    });
    
    //unprotected routes
    Route::get('customer/login', 'Mobile\AuthController@getLoginForm');
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 2021-01-21
      • 2017-02-26
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2015-08-02
      相关资源
      最近更新 更多