namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
class UserProfileController extends Controller
{
public function __construct(){
$this->middleware('auth');
$this->middleware('auth:admin');
}
public function show()
{
return view('user.profile.show');
}
}
在此控制器中,我想在 show 上应用这两个中间件 方法。当我使用普通登录访问此方法时,这个 显示视图内容。但是当我使用admin访问此方法时 登录,然后此方法重定向到正常登录页面。
答案 0 :(得分:1)
大家好,
我解决了这个问题。
我只创建一个
名为_show()的私有方法
两者都很常见
名为show()和showAdmin()
的公共方法
和
auth中间件的show()方法和
auth的showAdmin方法:管理中间件
以下是我的代码。
控制器页面
namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
class UserProfileController extends Controller
{
public function __construct(){
$this->middleware('auth',['only'=>['show'],'only'=>['showAdmin]]);
$this->middleware('auth:admin',['only'=>['showAdmin'],'only'=>['show]]);
}
public function show()
{
$response = $this->_show();
//Send $response to view
}
public function showAdmin()
{
$response = $this->_show();
//Send $response to view
}
private function _show()
{
//Common logic
//return
}
}
查看页面
@if(Auth::check())
{--Goto show method via route--}
@else
{--Goto showAdmin method via route--}
@endif
我认为这对想要在Laravel 5.4中使用中间件的人有帮助
谢谢
尝试工作的心脏