首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Auth - Laravel查找用户

用Auth - Laravel查找用户
EN

Stack Overflow用户
提问于 2018-11-05 22:14:37
回答 3查看 317关注 0票数 0

我正在尝试使用Auth在我的应用程序中找到登录用户,但是我得到了trying to get property of non-object,我清楚地知道它正在返回null。

在下面的代码中,一个事件触发了我的web钩子,并将帖子发送到下面的地址。函数orderCreateWebhook触发,但这是错误的来源。

线$get_template = Order::where('id', Auth::user()->id);。为什么Auth返回null?我也被记录了,因为我在同一个控制器中使用auth作为另一个工作良好的函数。

是因为它是网钩吗?

控制器

代码语言:javascript
复制
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");

    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-05 22:33:54

在您的函数registerOrderCreateWebhook中,您似乎提出了对shopify的请求,并提供了您的web钩子作为成功后将用户重定向到的地址。如果这是正确的,则该请求不知道生成发出api请求的原始请求的用户,因为该请求来自完全不同的来源。

您需要与url一起传递一些密钥,然后在orderCreateWebhook中获取用户。类似于:

代码语言:javascript
复制
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表中的一个列。出于安全考虑,我不会使用user_id。所以你最终会得到这样的结果:

代码语言:javascript
复制
//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");

}
票数 2
EN

Stack Overflow用户

发布于 2018-11-05 22:33:03

是因为它是网钩吗?

是的,你不能在网络钩子中使用会话。正在调用的是shopify服务器。您应该阅读文档,它可能存在一种方法,可以在调用shopify api中提供唯一标识符,并将其返回到web钩子中,以找到与您相关的用户。

票数 1
EN

Stack Overflow用户

发布于 2018-11-07 12:20:31

只需使用这个获得身份验证的用户使用类/控制器中的外观

代码语言:javascript
复制
use Illuminate\Support\Facades\Auth

public function getAuthUser(){
    $user = Auth::user()
    if(!is_null($user)
   {
    //user is authenticated
   }
  else 
   {
    // no user
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53163009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档