首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.4:无法让Auth::guard按预期工作

Laravel 5.4:无法让Auth::guard按预期工作
EN

Stack Overflow用户
提问于 2017-04-28 02:02:19
回答 1查看 560关注 0票数 0

我正在使用Auth::guard来检查注销控制器中使用的是哪个守卫。如果它是管理员守卫,那么我希望重定向到管理员登录,否则它将转到用户登录。

我的期望是,Auth::guard('admin')会检查该防护是否确实是admin类型的。如果是这样,则继续执行If语句。

然而,它的工作方式并不像我期望的那样。我用dd(Auth::guard())检查我的守卫,它肯定是web守卫。但不管怎样,Auth::guard('admin')仍在让它通过。

我做错了什么?我的假设re Auth::guard是错的吗?非常感谢!

代码语言:javascript
复制
if (Auth::guard('admin') ) {

        $this->guard()->logout();

        $request->session()->flush();

        $request->session()->regenerate();  

        return redirect('admin-login');
    }
    else {

        $this->guard()->logout();

        $request->session()->flush();

        $request->session()->regenerate();  
        return redirect('/login');
    }
EN

回答 1

Stack Overflow用户

发布于 2017-04-28 02:56:25

当你使用Auth::guard('admin')时,它会抓取那个守卫,如果它存在,它不会检查这个守卫当前是否正在被使用。由于该保护确实存在,因此if (Auth::guard('admin') )将始终为真。

要检查该保护当前是否正在使用,您可以执行if(Auth::getDefaultDriver() === 'admin')。当您使用auth:admin中间件时,它会将admin设置为默认保护,因此您可以对照该设置进行检查。

一种更干练的方法是:

代码语言:javascript
复制
    $this->guard()->logout();

    $request->session()->flush();

    $request->session()->regenerate();  

    return redirect(Auth::getDefaultDriver() === 'admin' ? '/admin-login' : '/login')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43664948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档