laravel 5.3
我正在尝试在AdminController中创建一个按钮或链接执行激活功能,但每当我点击按钮时它会给我404页面说它无法找到AdminController @ activate .
当我从函数中使用dd()时它不做任何事情 .
如果您需要任何其他信息,请说明,我绝不是一个laravel专家:-)
Admin middleware
use Closure;
use Illuminate\Support\Facades\Auth;
class admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->level == 2)
{
return $next($request);
}
return abort(401, 'Unauthorized');
}
}
Web Routes
Route::group(['middleware' => ['auth.admin']], function() {
Route::resource('admin', 'AdminController');
Route::get('/admin/{id}/delete', 'AdminController@delete');
Route::get('/admin/activate', 'AdminController@activate');
});
AdminController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
class AdminController extends Controller
{
public function activate(){
$users = User::where('active', 0)->get();
$users->active = 1;
$users->timestamps = false;
$users->update();
$users->timestamps = true;
return redirect('admin');
}
}
HTML/blade
<a href="{{ url('/admin/activate') }}"><span class="glyphicon glyphicon-cog" aria-hidden="true">Activate all</span></a> <br>
@foreach ($data['inactiveusers'] as $user)
{{$user->firstname}} {{$user->surname}}
<a href="{{ url('/admin/' . $user->id .'/edit') }}"><span class="glyphicon glyphicon-cog" aria-hidden="true"></span></a>
<a href="{{ url('/admin/' . $user->id .'/delete') }}"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
<br>
@endforeach
1 回答
laravel middleware将不允许访问受未经身份验证的用户保护的URL .
How can i fix this ?
确保用户已通过您要求的网址的身份验证
Tip :
将/ admin / activate移出中间件并直接尝试访问 . 它应该工作
Worst Hack :
您可以在
Kernal.php
中的middlewareGroups
中禁用此功能,但不建议这样做 .