我正在尝试在Laravel 5.6中创建一个中间件,该中间件检查用户是否经过身份验证。我的中间件:
checklogin.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class checklogin
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/welcome');
}
return $next($request);
}
}
我在受保护的$ routeMiddleware的kernel.php中添加了它:
'checklogin' => \App\Http\Middleware\checklogin::class,
我也在路由器上添加了它:
Route::get('/login','loginController@index');
Route::post('/welcome','loginController@store')->middleware('checklogin');
并且还使用
use App\Http\Middleware\checklogin;
我的loginController是:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use Session;
use Illuminate\Support\Facades\Redirect;
session_start();
class loginController extends Controller
{
public function index()
{
return view('/login');
}
public function store(Request $request)
{
$name = $request->name;
$result = DB::table('tbl_login')
->where('name',$name)
->first();
if ($result) {
Session::put('name',$result->name);
Session::put('id',$result->id);
return Redirect::to('/welcome');
}
else{
Session::put('messege','invalid email or password');
return Redirect::to('/login');
}
}
我的login.blade.php是:
<p class="alert-danger">
<?php
$messege = Session::get('messege');
if ($messege) {
echo "$messege";
Session::put('messege',null);
}
?>
</p>
<form method="POST" action="{{url('/welcome')}}">
@csrf
<label for="name" >Name</label>
<input id="name" type="text" name="name" value="" required autofocus>
<button type="submit" class="btn btn-primary">
login
</button>
</form>
但是它显示此错误消息:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
我是laravel的新手。我才刚刚开始学习。我不知道问题出在哪里。请帮忙!
答案 0 :(得分:0)
似乎还可以,但请检查此行
Year RS Team RS_target
1 1962 599 WSA
2 1962 774 STL
3 1963 747 WSA
4 1963 725 STL
5 1964 702 WSA
6 1964 800 STL
您无法重定向 POST 路由,您只需要重定向 GET 路由
您可以使用if (Auth::guard($guard)->check()) {
return redirect('/login');
}
或任何其他路线
或在 GET
中创建其他路线/login