我正在尝试在laravel中制作一条路线,如果用户已登录但可以使用,但如果没有则可以使用。
在我的情况下,我有一个名为“场地”的桌子和一个可以将场地作为他最喜欢的“用户”。
所以这些是我的路线:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="preferExternal"
package="com.Company.ProductName"
android:versionName="1.0"
android:versionCode="1">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<!-- IronSource -->
<activity android:name = "com.ironsource.sdk.controller.ControllerActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"/>
<activity android:name = "com.ironsource.sdk.controller.InterstitialActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent"/>
<activity android:name="com.ironsource.sdk.controller.OpenUrlActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent" />
<!-- Vungle -->
<activity android:name="com.vungle.publisher.VideoFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:name="com.vungle.publisher.MraidFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
</application>
</manifest>
现在我注意到Route::group(['middleware' => ['cors', 'bindings', 'auth:api']], function () {
Route::match(['GET', 'OPTIONS'], 'venue/{venue}', 'VenuesController@getVenue')->name('venue')->where('venue', '[0-9]+');
});
Route::group(['middleware' => ['cors', 'bindings', 'api'], 'namespace' => 'Api'], function () {
Route::match(['GET', 'OPTIONS'], 'venue/{venue}', 'VenuesController@getVenue')->name('venue')->where('venue', '[0-9]+');
});
仅在具有Auth::user();
的中间件的路线中可用,但如果用户未登录,我还希望它能够到达场地。并且使用两个组都没有这样做。
My Venue模型如下所示:
'auth:api'
必须有更好的方法来做到这一点。
我希望有人可以帮助我。
答案 0 :(得分:2)
好的,我终于找到了自己问题的答案。 显然,获取Passport当前的正确方法是:
$user = auth()->guard('api')->user();
Auth::user()
仅适用于中间位置为'auth:api'
的路线,但如果我这么说的话,这个路线在任何地方都可用。
如果我错了,请随意纠正我:)