当前位置: 首页 > 知识库问答 >
问题:

Laravel中间件将包中的所有身份验证路由重定向到仪表板

屠建本
2023-03-14

我正在设置一个使用自定义包和laravel身份验证中间件的laravel 5.3应用程序。当我在laravel/packages/vendor/packageName/src/routes中定义路由时。php与中的情况相同

Route::get('member/list', function() {
    return 'member lists here';
})->middleware('auth');

重定向到localhost:8000/dashboard定义在ReDirectIf身份验证中间件的url,但当我在资源/路由/web.php中定义路由时,它会根据需要路由和授权。

有什么我做错了,或者我需要检查的吗?

---更新---下面是我的ServiceProvider类的一个片段

namespace Beansoft\PractitionerIMS;
use Illuminate\Support\ServiceProvider;
class PractitionerIMSServiceProvider extends ServiceProvider {
    public function register() {
        $this->app->bind('practitionerims', function($app) {
            return new PractitionerIMS;
        });
    }

    public function boot() {
        //load the routes file
        if (!$this->app->routesAreCached()) {
            require __DIR__ . '/Http/routes.php';
        }
}

App/Config/App。php

'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,

        Beansoft\PractitionerIMS\PractitionerIMSServiceProvider::class,


        /*
         * Package Service Providers...
         */

        //
        Yab\Laracogs\LaracogsProvider::class,

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

    ],

php artisan路由的输出

共有2个答案

鱼渝
2023-03-14

来自Laravel 5.3文档:

若要为包定义路由,只需从包服务提供商的引导方法中获取路由文件。在您的路由文件中,您可以使用照明\支持\门面\路由门面来注册路由,就像在典型的Laravel应用程序中一样:

您的问题是,您的包中的routes.php文件不包括在您的项目中。要实现这一点,您应该在包的ServiceProvider中放入以下代码:

public function boot()
{
  if (! $this->app->routesAreCached()) {
      // customize this reference according to your package structure
      require __DIR__.'/../../routes.php';
  }
}

在文档中阅读更多关于它的信息。

更新尝试使您的路线如下(使用组):

Route::group(['middleware' => 'auth'], function() {
  Route::get('member/list', function() {
    return 'member lists here';
  });
});
章高爽
2023-03-14

在Laravel5.3中,通过使用“web”中间件组,会话中间件被添加到路由中,auth为我工作。

Route::group(['middleware' => ['web','admin']], function () {
     Route::get('/admin/somepage', '\MyPackage\SomeController@somepage');
});
 类似资料:
  • 我在auth中间件方面遇到了一些问题。我将中间件放在一个路由组中,并回滚了users表。我希望应用程序将我重定向到我的登录/搜索页面,但它没有这样做,它只是给了我“尝试获取非对象的属性”,它指的是我的仪表板视图中的函数(我不应该访问该函数)。 这是我的路线代码: 以下是我的观点: 另外,我不确定从数据库中删除用户是否意味着Laravel将自动删除用户会话。 谢谢你的帮助!

  • 我的路线是这样的: 这个路由检查,如果用户是登录之前调用免费下载方法.如果不是,登录表单出现。 然后用户需要登录并且登录控制器返回家并且用户需要再次点击路线按钮('product.free')以便访问路线名称product.free。 有一种方法调用ProductController@freeDownload方法只是在登录后,如果用户点击按钮之前? 希望我或多或少是清楚的。 这里我的登录控制器:

  • 是否可以将用户重定向到Laravel中的POST路由。我有两张表格。表格一发送到包含表格二的路线,表格二发送到最终路线,然后进行验证。如果

  • 遵循这个指南:https://www.youtube.com/watch?v=bqkt6eSsRZs 添加了从laravel docs的auth路由 创建登录/注册视图 创建 /home路线 自定义AuthController: 尝试访问身份验证/登录时,我遇到以下错误: 请求中出现错误异常。php第775行:。。未根据请求设置会话存储。 已将身份验证路由移动到中间件组。 成功注册,在数据库和会话

  • 最近我开始使用Laravel5.3来写博客,但是在运行

  • 我正在laravel中创建一个多身份验证系统,其中有两种类型的用户:管理员(由我创建)和用户(使用本地laravel身份验证系统)。 如果我以用户身份登录,当我尝试访问登录页面时,当我已经登录,它会将我重定向回仪表板,但如果我以管理员身份登录,当我再次访问管理员登录页面时,它会让我再次登录,尽管已经作为管理员登录。 以下是我的重定向身份验证类代码: 有人能解释一下发生了什么事吗?