gpt4 book ai didi

ios - 如何使用身份验证方法快速访问 Laravel API?

转载 作者:行者123 更新时间:2023-11-28 14:15:40 24 4
gpt4 key购买 nike

我正在开发 iOS 应用程序我自己制作了 POST API。现在,当我从 iOS 按下按钮时,我创建了一个函数来访问 APi 并发布值。我尝试使用 PostMan 输入一次值来测试 API,但出现错误。 页面因不活动而过期。

我理解这个错误是因为POST没有包含csrf_token

如果在iOS上使用csrf_token认证,认证方式是什么?另外,还有其他的认证方式吗?

快捷键功能

@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
}

Laravel FavoriteController

public function favorite(Request $request){

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

Laravel 路由/web.php

Route::post('/store/favorite', 'FavoriteController@favorite');

最佳答案

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

通常,您应该将这些类型的路由放置在 RouteServiceProvider 应用于 routes/web.php 文件中所有路由的 web 中间件组之外。但是,您也可以通过将路由的 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/*',
];
}

注意:Apis 应该是无状态的。最好使用 jwt 进行身份验证,并且 csrf token 仅用于 web 界面而不用于 api

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

如果你使用的是最新版本的 laravel 那么你有 api.php 而不是 web.php 的 api

如果你仍然想使用 web.php 那么你可以在 VerifyCsrfToken 中排除 csrf token

  protected $except = [
'/*',

];

我建议你在 routes/api.php 中添加你的路由,这样你就不会遇到 csrf token 问题。另外你需要在你的 url 中添加 api

http://localhost:8080/api/yourroutename

关于ios - 如何使用身份验证方法快速访问 Laravel API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52198097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com