首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用身份验证中间件保护某些路由,但不保护其他路由

使用身份验证中间件保护某些路由,但不保护其他路由
EN

Stack Overflow用户
提问于 2017-06-14 04:40:00
回答 3查看 540关注 0票数 1

我有一个受保护的路由组:

代码语言:javascript
运行
复制
Route::group(['prefix' => 'member', 'middleware' => 'auth'], function () {
    Route::get('/')->name('member.home')->uses('MemberController@index');
    Route::get('show')->name('member.show')->uses('MemberController@show');
    // ...various additional protected member routes...
});

但是,我有两条不应该受到保护的路由:

代码语言:javascript
运行
复制
Route::get('member/pay')->name('member.pay')->uses('MemberController@pay');
Route::get('member/confirm/{payment}')->name('member.confirm')->uses('MemberController@confirm');

只要将'middleware' => 'auth'应用于该单独的路由组,它就会覆盖所有带member前缀的路由,即使我没有将它们放在该组中。

我已经尝试将未受保护的路由移动到受保护的路由组的上下,但仍然获得401 unauthorized,除非我完全删除中间件。

这不会影响其他任何以member为前缀的routes...only。

如何从auth中排除这两条路由?

EN

回答 3

Stack Overflow用户

发布于 2017-06-14 04:47:15

怎么样

代码语言:javascript
运行
复制
Route::group(['prefix' => 'member'], function () {
    Route::get('/')->name('member.home')->uses('MemberController@index')->middleware('auth');
    Route::get('show')->name('member.show')->uses('MemberController@show')->middleware('auth');
    //
    Route::get('member/pay')->name('member.pay')->uses('MemberController@pay');
    Route::get('member/confirm/{payment}')->name('member.confirm')->uses('MemberController@confirm');
});
票数 0
EN

Stack Overflow用户

发布于 2017-06-14 04:48:17

一种方法是从路由组中删除中间件分配,转而在MemberController构造函数中分配中间件。这样,您就可以排除哪些方法不应该应用它,如下所示:

代码语言:javascript
运行
复制
class MemberController extends Controller
{
    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth')->except(['pay', 'confirm']);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-06-14 04:50:19

使用像这样的嵌套组。

代码语言:javascript
运行
复制
Route::group([ 'prefix' => 'member' ], function() {
    // Protected routes
    Route::group([ 'middleware' => 'auth' ], function() {
        Route::get('/', 'MemberController@index')->name('member.home');
        Route::get('show', 'MemberController@show')->name('member.show');
        // ...various additional protected member routes...
    });

    // Non protected routes
    Route::get('pay', 'MemberController@pay')->name('member.pay');
    Route::get('confirm/{payment}', 'MemberController@confirm')->name('member.confirm');
    // ...various additional non protected member routes...
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44531137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档