27240


userとadminが別のルートでログインできる機能を実装しています。ほとんどlaravel5.2標準のauth機能を拡張したものです。

[code]

    php artisan route:list
    
    |        | GET|HEAD | admin/home                   |                      | App\Http\Controllers\AdminHomeController@index                  | web,auth:admin  |
    |        | POST     | admin/login                  |                      | App\Http\Controllers\AdminAuthController@login                  | web,guest:admin |
    |        | GET|HEAD | admin/login                  |                      | App\Http\Controllers\AdminAuthController@showLoginForm          | web,guest:admin |
    |        | GET|HEAD | admin/logout                 |                      | App\Http\Controllers\AdminAuthController@logout                 | web             |
    |        | GET|HEAD | home                         |                      | App\Http\Controllers\HomeController@index                       | web,auth:user   |
    |        | GET|HEAD | login                        |                      | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest:user  |
    |        | POST     | login                        |                      | App\Http\Controllers\Auth\AuthController@login                  | web,guest:user  |
    |        | GET|HEAD | logout                       |                      | App\Http\Controllers\Auth\AuthController@logout                 | web             |
    |        | POST     | password/email               |                      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest       |
    |        | POST     | password/reset               |                      | App\Http\Controllers\Auth\PasswordController@reset              | web,guest       |
    |        | GET|HEAD | password/reset/{token?}      |                      | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest       |
    |        | GET|HEAD | register                     |                      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest:user  |
    |        | POST     | register                     |                      | App\Http\Controllers\Auth\AuthController@register               | web,guest:user  |
    
[/code]

admin guardを追加しています。

ログインだったり、非認証ユーザー（admin)をそれぞれのlogin画面にリダイレクトするところまではできたのですが、以下のif文の中の、Auth::guest()が理解できていなく困っています。

[code]

    app.blade.php
    ...
    @if (Auth::guest())
             <li><a href="{{ url('/login') }}">Login</a></li>
             <li><a href="{{ url('/register') }}">Register</a></li>
    @else
             <li class="dropdown">
               <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
                     {{ Auth::user()->name }} <span class="caret"></span>
               </a>
    
               <ul class="dropdown-menu" role="menu">
                    <li><a href="{{ url('/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li>
               </ul>
             </li>
    @endif
    ....
    
[/code]

ルートでは、home、admin/home画面はauthで、それ以外がguestだと認識しているのですが、ログイン後のhome画面でも、上のAuth::guest()がtrueになってしまう状態で、思っているビューが表示されません。  
似たような問題を解決されたことがある方、どうかご教授よろしくお願いいたします。


CC BY-SA 3.0
2016-06-30T02:57:50.550
27207
2016-07-01T05:24:35.370
10351
question
php laravel
laravelのauth、とguest、の判断の仕方について


Auth::check() や Auth::guest() は config/auth.php で設定したデフォルトの guard が使われます。

[code]

    Auth::guard('admin')->guest()
    
[/code]

のように guard を指定してみてはどうでしょうか？


CC BY-SA 3.0
2016-07-01T05:24:35.370
27240
2016-07-01T05:24:35.370
10083
27207
answer