簡體   English   中英

中間件“身份驗證”在 Laravel 5.8 中不起作用

[英]Middleware 'auth' does not work in Laravel 5.8

抱歉,我是拉丁人,我的英語不好。

我在UserController.php文件中使用auth middlewate 但不起作用,當我嘗試從沒有登錄的用戶訪問user/profile_pictureuser/bio路由時,Laravel 拋出一個The GET method is not supported for this route. Supported methods: POST. The GET method is not supported for this route. Supported methods: POST. 例外。

網頁.php:

Route::get("/", function(){
   return view('welcome');
});

Route::get('home', 'HomeController@index')->name('home');

Route::get("admin/users/seller_register", "Auth\RegisterController@showSellerRegistrationForm")
   ->name("users.seller_register_form");
Route::post("admin/users/seller_register", "Auth\RegisterController@sellerRegister")
   ->name("users.seller_register");

Route::get("admin/users/modal_delete_form", "AdministratorController@modalDeleteForm");
Route::get("admin/users/modal_update_form", "AdministratorController@modalUpdateForm");
Route::get("admin/users/crud_content", "AdministratorController@crudContent");
Route::resource('admin/users', 'AdministratorController');

Route::get("user/profile/{e_mail}", "UserController@profile")->name("user.profile");
Route::post("user/profile_picture", "UserController@profilePicture")->name("user.profilePicture");
Route::post("user/bio", "UserController@bio")->name("user.bio");

Auth::routes(["verify" => true]);

用戶控制器.php:

namespace App\Http\Controllers;

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

class UserController extends Controller{

   /**
    * Create a new controller instance.
    *
    * @return void
    */
   public function __construct(){
      $this->middleware("auth");
   }

   /**
    * Display the user profile.
    *
    * @param  String  $e_mail
    * @return \Illuminate\Http\Response
    */
   public function profile($e_mail){
      $user = User::where("e_mail", "=", $e_mail)->first();
      return(view("user.profile")->with(["user" => $user]));
   }

   /**
    * Store the user profile picture.
    *
    * @param  \Illuminate\Http\Request
    * @return \Illuminate\Http\Response
    */
   public function profilePicture(Request $request){
      $user = User::where("e_mail", $request->e_mail)->first();
      if($request){
         if($request->hasFile("profilePicture")){
            if($user->profile_picture === "public/defaultUserPhoto.jpg"){
               $path = Storage::putFile('public', $request->file('profilePicture'));
            }else{
               Storage::delete($user->profile_picture);
               $path = Storage::putFile("public", $request->file('profilePicture'));
            }
            $user->update(["profile_picture" => $path]);
         }
      }
      return(redirect()->route("user.profile", ["e_mail" => $user->e_mail]));
   }

   /**
    * Update user biography and occupation.
    *
    * @param  \Illuminate\Http\Request
    */
   public function bio(Request $request){
      $user = User::where("e_mail", $request->e_mail)->first();
      if($request){
         $user->update([
            "occupation" => $request->occupation,
            "biography" => $request->biography
         ]);
      }
      return(redirect()->route("user.profile", ["e_mail" => $user->e_mail]));
   }
}

只需更改這些路線

Route::post("user/profile_picture", "UserController@profilePicture")->name("user.profilePicture");
Route::post("user/bio", "UserController@bio")->name("user.bio");

到...

Route::get("user/profile_picture", "UserController@profilePicture")->name("user.profilePicture");
Route::get("user/bio", "UserController@bio")->name("user.bio");

完畢。

試試這個使用get方法

Route::get("user/profile_picture","UserController@profilePicture")->name("user.profilePicture");

Route::get("user/bio", "UserController@bio")->name("user.bio");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM