【发布时间】:2017-02-01 05:33:05
【问题描述】:
laravel 5.3
我正在尝试使按钮或链接在 AdminController 中执行激活功能,但每当我单击该按钮时,它都会给我 404 页面说它找不到 AdminController@activate。
当我从函数中使用 dd() 时,它什么也不做。
如果您需要任何其他信息,请说出来,我绝不是 laravel 专家 :-)
管理中间件
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');
}
}
网络路由
Route::group(['middleware' => ['auth.admin']], function() {
Route::resource('admin', 'AdminController');
Route::get('/admin/{id}/delete', 'AdminController@delete');
Route::get('/admin/activate', 'AdminController@activate');
});
管理员控制器
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/刀片
<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
【问题讨论】:
-
在 HTML 中,指定方法为 GET。
-
他正在使用一些链接,所以他不应该指定任何方法
-
调试:将/admin/activate移出中间件,直接尝试访问
-
@SulthanAllaudeen 很棒的电话,显然中间件有问题,因为我可以在它之外访问它。由于某种原因,我无法执行 auth::check() 并在同一 if 语句中检查用户级别
-
您确定请求来自经过身份验证的来源,即用户在访问 url 时是否已登录?