首页 文章

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException . 原因是什么?

提问于
浏览
1

我对Laravel很新,我面临一个模糊的错误 . 每当我尝试使用用户名和密码登录时,我都会收到此错误 .

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

我的代码由以下内容组成:

UserController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;

class UserController extends Controller
{
    public function postSignUp(Request $request){
        $firstName = $request['firstName'];
        $lastName = $request['lastName'];
        $username = $request['username'];
        $password = bcrypt($request['password']);
        $email = $request['email'];

        $user = new User();
        $user->first_name = $firstName;
        $user->last_name = $lastName;
        $user->username = $username;
        $user->password = $password;
        $user->email = $email;

        $user->save();

        Auth::login($user);

        return redirect()->back();
    }

    public function postSignIn(Request $request){
        $username = $request['username'];
        $password = $request['password'];
        if (Auth::attempt(['username' => $username, 'password' => $password])){
            return redirect()->back();
        }
    }
}

提供商名为User.php

<?php

namespace App;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;
}

路由文件web.php

<?php

Route::get('/', 'PagesController@index')->name('home');
Route::post('signup', 'UserController@postSignUp')->name('signup');
Route::get('signin', 'UserController@postSignin')->name('signin');

2 回答

  • 0

    MethodNotAllowed意味着您正在使用Web服务器不喜欢该请求的VERB ...即GET而不是POST .

    您的登录控制器名为 postSignIn ,但我注意到您使用 get 调用它

  • 4

    这是因为路线不存在 . 在邮政路线中添加登录 . postSignin应该是一个后期路线

    Route::post('signin', 'UserController@postSignin')->name('signin');
    
    Route::get('signin', 'UserController@getSignin')->name('signInForm');
    

    代替

    Route::get('signin', 'UserController@postSignin')->name('signin’);
    

相关问题