簡體   English   中英

使用Auth查找用戶-Laravel

[英]Finding User with Auth - Laravel

我試圖使用Auth在我的應用程序中找到登錄的用戶,但是我trying to get property of non-object ,我清楚地知道它返回的是null。

在下面的代碼中,一個事件觸發了我的webhook,並將帖子發送到下面的地址。 函數orderCreateWebhook觸發,但這就是錯誤的orderCreateWebhook

$get_template = Order::where('id', Auth::user()->id); 為什么Auth請返回null? 我也登錄了,因為我在同一控制器中對其他功能正常使用auth。

是因為它是一個Webhook嗎?

調節器

public function registerOrderCreateWebhook(Request $request)
    {

            $shop = "feas.myshopify.com";
            $token = "8f43d89a64e922d7d343c1173f6d";
            $shopify = Shopify::setShopUrl($shop)->setAccessToken($token);
            Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", ['webhook' => 
             ['topic' => 'orders/create',
             'address' => 'https://larashop.domain.com/order-create-webhook',
             'format' => 'json'
             ]
            ]);
    }




     public function orderCreateWebhook(Request $request)
    {

         $get_template = Order::where('id', Auth::user()->id);

        $baseurl = "https://apps.domain.net/smsapi";
        $query = "?key=7e3e4d4a6cfebc08eadc&to=number&msg=message&sender_id=Shopify";
        $final_uri = $baseurl.$query;
        $response = file_get_contents($final_uri);
        header ("Content-Type:text/xml");

    }

在您的函數registerOrderCreateWebhook您似乎正在請求shopify api的請求,並提供您的webhook作為shopify將在成功后將用戶重定向到的地址。 如果這是正確的,則該請求將不知道生成了發出api請求的原始請求的用戶,因為該請求來自完全不同的來源。

您需要將一些密鑰與url一起傳遞,然后在orderCreateWebhook獲取用戶。 就像是:

Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", 
['webhook' => 
    ['topic' => 'orders/create',
     'address' => 'https://larashop.domain.com/order-create-webhook/some-unique-key',
     'format' => 'json'
    ]
 ]);

我的建議是將一個唯一的哈希存儲在某個位置,該哈希與系統中的用戶相關,也許是用戶表中的一列。 出於安全原因,我不會使用user_id 因此,您最終將得到以下結果:

//route
Route::get('/order-create-webhook/{uniqueKey}', 'YourController@orderCreateWebhook');
//or
Route::post('/order-create-webhook/{uniqueKey}', 'YourController@orderCreateWebhook');
// depending on the request type used by api which calls this endpoint

// controller function
public function orderCreateWebhook($uniqueKey, Request $request)
{

     $user = User::where('unique_key', $uniqueKey)->first();
     $get_template = Order::where('id', Auth::user()->id);

     $baseurl = "https://apps.domain.net/smsapi";
     $query = "?key=7e3e4d4a6cfebc08eadc&to=number&msg=message&sender_id=Shopify";
     $final_uri = $baseurl.$query;
     $response = file_get_contents($final_uri);
     header ("Content-Type:text/xml");

}

是因為它是一個Webhook嗎?

是的,您不能在網絡掛鈎中使用會話。 呼叫的是shopify服務器。 您應該閱讀該文檔,它可能是一種在調用shopify api的過程中提供唯一標識符並將其返回到Webhook中以查找與您相關的用戶的方法。

只是使用它來獲得通過身份驗證的用戶使用您的類/控制器中的外觀

use Illuminate\Support\Facades\Auth

public function getAuthUser(){
    $user = Auth::user()
    if(!is_null($user)
   {
    //user is authenticated
   }
  else 
   {
    // no user
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM