【问题标题】:Laravel redirects all resources to the homeLaravel 将所有资源重定向到 home
【发布时间】:2017-08-20 05:31:20
【问题描述】:

laravel 5.4 应用程序中,我有一个资源及其控制器。当我输入资源操作的 URL(如索引)而不是获取控制器函数结果(JSON)时,我被重定向到 /home: (我已经登录并被重定向到我用户的/home

我的控制器:

class DreamController extends Controller
{

public function __construct()
{
  $this->middleware('auth:api');
}
public function index(Request $request)
{
  $dreams = $request->user()->dreams()->orderBy('created_at', 'desc');

  return response()->json(['dreams' => $dreams]);
}
}

我的路由api.php:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Route::resource('dreams', 'DreamController');

我的 web.php 路由:

Route::get('/', function () {
    return view('welcome');
});
Route::resource('dreams', 'DreamController');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home'); 

应用程序在我的本地机器上,所以 url 是: http://127.0.0.1:8000/dreams 但我被重定向到 http://127.0.0.1:8000/home

【问题讨论】:

  • 你能告诉我们你的网址吗?这将有助于了解更多。
  • 尝试使用 artisan 列出您当前的路线 - 看看那里是否出现了梦想路线:php artisan route:list
  • 是的,路由存在

标签: php laravel laravel-5 routes


【解决方案1】:

在 web.php 中试试这个

Route::get('/', function () {
    return view('welcome');
});
Auth::routes();
Route::resource('dreams', 'DreamController');
Route::get('/home', 'HomeController@index')->name('home'); 

【讨论】:

  • 和我现在的路线有什么区别?
  • 你试过了吗?请试一试,让我知道结果。我有一个理论,但不确定它是否可行。
【解决方案2】:

您正在网络路由中使用api 守卫。使用令牌的api 守卫检查身份验证。

只需将 DreamController constructor 中的 api 保护替换为 web 保护,它将使用会话进行身份验证。

使用这个:-

public function __construct()
{
    $this->middleware('auth:web');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2019-11-25
    相关资源
    最近更新 更多