Laravel LoginController条件不满足';我不是每次都工作

Laravel LoginController条件不满足';我不是每次都工作,laravel,Laravel,我想阻止某些处于阻止结构中的用户的登录访问,这是第一次,但当我返回导航器并再次尝试登录时,用户可以访问应用程序。我不知道为什么。。有什么想法吗 public function __construct() { $this->middleware('guest')->except('logout'); } protected function authenticated(Request $request, $user) { $blacklist = Structur

我想阻止某些处于阻止结构中的用户的登录访问,这是第一次,但当我返回导航器并再次尝试登录时,用户可以访问应用程序。我不知道为什么。。有什么想法吗

public function __construct()
{
    $this->middleware('guest')->except('logout');
}


protected function authenticated(Request $request, $user)
{

    $blacklist = Structure::where('blocked' , '=' , 1)->pluck('id')->toArray();

    $structure_id = $user->structure->id;


    if(in_array($structure_id,$blacklist)){

        return redirect('compte-bloque');

    }else{

        return redirect('/home');

    }
}

authenticated
方法在用户登录到站点后调用,因此您需要再次注销他们

另外,你可以简化你的逻辑。假设
Structure
$user->Structure
的模型相同,您应该能够:

protected function authenticated(Request $request, $user)
{
    if ($user->structure->blocked) {

        auth()->logout();

        return redirect('compte-bloque');
    } 
}

只是一个观察,但是
->pull()
返回一个
集合,该集合具有
->contains()
方法,因此您可以使用
if($blacklist->contains($structure_id))
而不是转换为数组,然后在数组中使用
,因为
->contains()
基本上就是这样做的,你是不想让这些用户登录,还是不让他们访问网站的某些区域?我不想让他们访问所有application@TimLewis我试过你的建议,但第一次还是一样,它重定向到了“家”我的建议只是一个效率/与框架一起工作的问题;没想到它会解决您的问题:Pif i put auth()->logout();用户从未看到“compte bloque”视图;你的方法行得通,但我想保留这个观点。我应该使用auth()->logout();作为视图中的facade?或者您知道在进行身份验证之前在何处调用登录名,我可以把这个条件放进去maybe@MathieuMourareau该用户是否需要登录才能查看
compte bloque
?@MathieuMourareau如果用户不必登录
compte bloque
,那么我看不出他们无法重定向到
compte bloque
的原因。他们以这种方式注销后实际发生了什么?我只需要检查想要登录的用户是否连接到阻止的结构,如果是这种情况,我会返回“compte bloque”。实际上,如果我使用auth()->注销;return redirect('compte-bloquer'),用户在尝试登录应用程序后将停留在登录页面@罗斯威尔逊