代码之家  ›  专栏  ›  技术社区  ›  Alex

如何使用身份验证方法通过swift访问laravelapi?

  •  0
  • Alex  · 技术社区  · 6 年前

    我正在开发iOS应用程序 现在,当我在iOS中按下按钮时,我创建了一个函数来访问APi和post值。 The page has expired due to inactivity.

    csrf_token .

    如果您在iOS上使用csrf\ U令牌进行身份验证,那么身份验证的方法是什么?另外,还有其他身份验证方法吗?

    快速按钮功能

    @IBAction func bookmarkBtn(_ sender: Any) {
        let user_id = defaultValues.string(forKey: "id")
    
        let urlString = "http://127.0.0.1:8000/store/favorite"
    
        let request = NSMutableURLRequest(url: URL(string: urlString)!)
    
        request.httpMethod = "POST"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    
    
    
        let params:[String:Any] = [
            "user_id": user_id,
            "store_id" : store_id,
        ]
    
        do{
            request.httpBody = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
    
            let task:URLSessionDataTask = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {(data,response,error) -> Void in
                let resultData = String(data: data!, encoding: .utf8)!
                print("result:\(resultData)")
                print("response:\(response)")
    
            })
            task.resume()
        }catch{
            print("Error:\(error)")
            return
        }
    

    public function favorite(Request $request){
    
       Favorite::create(
            array(
                'user_id' => $request->user_id,
               'store_id' => $request->store_id,
            )
        );
        return ['Status' => 'Success'];
    }
    

    拉维尔航线/网站.php

    Route::post('/store/favorite', 'FavoriteController@favorite');
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Vision Coderz    6 年前

    有时您可能希望从CSRF保护中排除一组uri。例如,如果您使用Stripe来处理支付,并且正在使用他们的webhook系统,您将需要从CSRF保护中排除Stripe webhook处理程序路由,因为Stripe不知道要向您的路由发送什么CSRF令牌。

    通常,您应该将这些类型的路由放置在RouteServiceProvider应用于路由中所有路由的web中间件组之外/网站.php文件。但是,您也可以通过将路由的URI添加到VerifyCsrfToken中间件的$except属性来排除路由:

    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
    
    class VerifyCsrfToken extends Middleware
    {
        /**
         * The URIs that should be excluded from CSRF verification.
         *
         * @var array
         */
        protected $except = [
            'stripe/*',
            'http://example.com/foo/bar',
            'http://example.com/foo/*',
        ];
    }
    

    https://laravel.com/docs/5.6/csrf#csrf-excluding-uris

    如果您使用的是最新版本的laravel,那么您有api.php文件而不是网站.php对于API

      protected $except = [
                '/*',
    
            ];
    

    我建议你加入你的路线 routes/api.php 这样你就不会得到csrf令牌了问题。还有您需要在URL中添加api

    http://localhost:8080/api/yourroutename