【问题标题】:Laravel redirect issue from blade template刀片模板中的 Laravel 重定向问题
【发布时间】:2017-08-24 09:23:10
【问题描述】:

我是 laravel 5 的新手。 我正在研究 larvel 页面安全性,我必须阻止打开某些页面或 Url 但是当我在视图中使用{{ Redirect::to('/dashboard') }} 时它不起作用。

请帮我在 laravel 视图(刀片模板)中找到use Redirect / Url 的方法

我已经试过了:-

  1. {{ url('/dashboard') }}
  2. {{ Redirect::to('/dashboard') }}

代码:-

@if(Auth::user()->role_id == 1)
{{ 'Page' }}
@else 
{{ Redirect::to('/dashboard') }}
@endif

【问题讨论】:

  • 你检查过laravel的重定向功能吗
  • 是的,但它们仅适用于控制器..
  • 您能否更清楚地说明代码?确实需要确认它是否达到了代码。因为没有提到错误,所以您收到任何错误?还是什么都没发生?
  • 我已经添加了我的代码,请检查
  • @AmanKumar 检查此stackoverflow.com/questions/34089905/… 相同的逻辑适用于检查用户是否拥有role_id == 1

标签: php redirect laravel-5


【解决方案1】:

我能够使用 Javascript 创建此重定向

@if(Auth::user()->role_id == 1)
  {{ 'Page' }}
@else 
  <script>
    window.location = "/dashboard";
  </script>
@endif

【讨论】:

    【解决方案2】:

    使用带有 Javascript 重定向的路由路径:

      @if(Auth::user()->role_id == 1)
          {{ 'Page' }}
       @else 
          <script>window.location = "{{ route('admin.list') }}";</script>
          <?php exit; ?>
       @endif
    

    【讨论】:

      【解决方案3】:
      @if(your conditions)
          @php
              header("Location: " . URL::to('/'), true, 302);
              exit();
          @endphp
      @endif
      

      【讨论】:

      • 请详细说明为什么这是答案,以便将来对 OP 有所帮助
      • @TimStack 当你使用 JavaScript 重定向时,你必须加载第一页,然后用 JavaScript 重定向它。这有两个问题: 1- 用户可能已经阻止了浏览器对 JavaScript 的访问权限。所以,重定向不会成功。 2- 就 SEO 而言,这种重定向方法不是正确的做法。但是如果在服务器端管理重定向,则不需要加载第一页。所以不会出现上述问题。
      • 请修改您的帖子。不要在评论中添加额外的信息。谢谢! :)
      【解决方案4】:
      @if(put_your_condition_here)
        {{session(['must_login'=>'must_login'])}};//if you want to display flash message
       window.location.href = "{{url('put your route here')}}";
      @endif  
      

      【讨论】:

        【解决方案5】:

        改用 JavaScript 重定向:

        @if(Auth::user()->role_id == 1)
          {{ 'Page' }}
        @else 
          <script>window.location = "/dashboard";</script>
        @endif
        

        【讨论】:

        • 如果您还需要返回消息怎么办?使用with()?
        • 如果用户在浏览器中禁用 javascript 会发生什么
        【解决方案6】:

        您的问题很难理解,但我想您想在检查用户是否登录后重定向视图上的用户。我有个坏消息要告诉你,Controller 上的逻辑不是 Views 上的。

        这意味着您需要检查用户是否在 Controller 上登录,然后重定向到正确的视图,在 Laravel 上,最常见的方法是创建一个 中间件检查用户是否登录,然后应用正确的逻辑。

        你有很多方法可以做到,但首先你需要了解它是如何工作的,你可以在Laravel Authentication docs.查看它

        【讨论】:

        • 请检查我的问题,我想根据我的问题中显示的条件将重定向添加到我的视图(刀片模板)中
        • 不,我只是检查视图中的条件角色,并希望使用视图中的重定向在某些错误页面上重定向
        • @AmanKumar 正如我在回答中所说,这种类型的逻辑必须在中间件/控制器上,而不是在视图中。
        • @AmanKumar 这是最好的方法。如果您需要检查某人是否已登录并重定向,最好在控制器、中间件甚至路由文件中完成,而不是在视图中完成。要使用 Redirect::to() 您必须返回在视图中不起作用的内容,因为它已经在为用户加载页面。如果您需要有关代码的帮助,请在 Twitter 上给我发消息... vmitchell85
        猜你喜欢
        • 2016-12-18
        • 2015-04-16
        • 2014-10-13
        • 1970-01-01
        • 2019-08-08
        • 2013-04-29
        • 2014-06-06
        • 2019-08-28
        相关资源
        最近更新 更多