【问题标题】:Laravel get session not returning an anythingLaravel 获取会话不返回任何内容
【发布时间】:2017-02-13 10:47:19
【问题描述】:

我正在学习 laravel,我在注册时使用 Auth::login,在登录时使用 Auth::attempt,我登录并在我的主布局中执行以下操作(使用刀片 php)

        @if(!Auth::check())
        <li><a href="#">Home</a></li>
        @endif
        @if(Auth::check())
            <li><a href="{{ route('news') }}">News</a></li>
            <li><a href="{{ route('admin') }}">Admin</a></li>
            <li><a href="#">{{ session()->get('username') }}</a></li>
        @endif

您可能已经注意到这是针对菜单的,当我注销时,我只会看到主菜单,而当我登录时,我只会看到新闻和管理员,我正在尝试设置在菜单中显示用户名以及将路由到配置文件(尚未创建)

如果我犯了一个愚蠢的错误,我深表歉意,我擅长 php,但总的来说,我对 laravel 和 MVC 还是很陌生

【问题讨论】:

  • 我也试过Session::get('username')同样的事情

标签: php laravel laravel-5.3


【解决方案1】:

根据您的会话管理代码,您的用户名可能不会出现在 Session 外观中。登录后获取用户数据的默认方式是使用:Auth::user()

如果用户有公共属性username,你就可以通过

Auth::user()->username

顺便说一句,最好使用@else 而不是再次检查反 Auth::check() 条件

【讨论】:

  • 它正在工作,感谢您的良好解释,所以对于会话,如果有 Auth::user 我为什么要使用它们?是的,我最终使用了这个@if(Auth::guest()) &lt;li&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt; @else &lt;li&gt;&lt;a href="{{ route('news') }}"&gt;News&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="{{ route('admin') }}"&gt;Admin&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;{{ Auth::user()-&gt;username }}&lt;/a&gt;&lt;/li&gt; @endif
  • 会话可用于存储有关您的用户的临时数据,例如上次访问的页面或类似的东西。然后数据也可以存储在数据库中以供将来使用,或者在会话结束时简单地销毁。在这里阅读更多内容:laravel.com/docs/master/session :)
  • Awesone 谢谢你,我之前使用过使用 pdo 的会话,但仅用于用户信息来检查是否登录。Laravel 很神奇,哈哈
  • 确实如此!我喜欢它,你才刚刚开始看到可能性。如果您还刚刚开始,我强烈建议您收听第一个 Get started Laracasts 视频。值了,顶我! :)
  • 谢谢!我正在关注一个 youtube 教程播放列表,但那个人使用的是 laravel 5.2,所以我必须用谷歌搜索 5.2 和 5.3 之间的所有变化,我很惊讶有很多
【解决方案2】:

对于这种情况,您应该尝试使用Auth::guest() 而不是Auth::check()

例如:

@if (Auth::guest())
    // Code that a guest can see, in your case que Home
@else
    // Code that a logged in user can see
@endif

对我来说效果很好!

希望对你有帮助;)

【讨论】:

  • 那不是问题
  • 我看不到会话
猜你喜欢
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 2018-10-21
  • 2021-08-28
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多