【问题标题】:Authentication In Laravel With Multi Auth使用多重身份验证在 Laravel 中进行身份验证
【发布时间】:2021-02-08 18:20:12
【问题描述】:

我正在学习 laravel 5.4 版。 我刚刚使用 laravel 和网站和管理面板制作了一个简单的博客文章应用程序

所以在前端代码常见的导航栏中如下所示

@if (Auth::guest())
    <li><a href="{{ route('login') }}">Login</a></li>
    <li><a href="{{ route('register') }}">Register</a></li>
@else
    <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
            {{ Auth::user()->vName }} <span class="caret"></span>
        </a>
    </li>

在控制器中

class PostController extends Controller
{
    public function __construct()
    {
        //$this->middleware('auth:user'); << i also tried thi
        $this->middleware('auth:user')->except('index','show');
    }

所以问题是我想让所有用户在没有登录的情况下阅读博客文章 但是如果我添加了这个中间件,那么用户在没有登录的情况下就无法访问这个页面。

我还尝试输入except() 关键字。添加后它可以工作,但问题出在导航栏中,它仍然显示Login/Register,而不是显示注销按钮和配置文件名称。

【问题讨论】:

  • 您好 TarangP,中间件设计为在控制器之前或之后触发。您可以将中间件应用于控制器(中级技能),但我认为为了学习 - 您应该将中间件保持在您的路线上。此外,在您的情况下,您需要带有身份验证中间件的“网络”中间件,以便您的会话运行。
  • 用你应该使用的正确中间件更新了我的答案

标签: php laravel authentication laravel-5 laravel-middleware


【解决方案1】:

更新:将控制器中间件重构为

$this->middleware('auth:web,user', ['except' => ['index', 'show']]);

然后尝试注册一个新用户

【讨论】:

  • 感谢您的回答。我已经更新了问题。现在问题是Auth::user()-&gt;vName 我得到的是NULL。那么我如何从用户那里检索数据
  • 显示的是NULL。这就是问题所在。如果我在Auth::User() 中检索数据,它将正常工作
  • 您能否将用户表列的片段添加到您的问题中
  • @TarangP 更新了我的答案,这应该可以解决您的问题
  • 我知道,但我仍然在为这个问题而苦苦挣扎。我仍然没有找到解决方案。仍然User 正在返回NULL
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 2018-07-21
  • 2018-10-17
  • 1970-01-01
  • 2020-11-14
  • 2015-09-23
  • 2020-12-30
  • 1970-01-01
相关资源
最近更新 更多