问题标签 [laravel-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 如何在电子邮件中为 api 路由和 laravel 上的 web 路由创建不同的密码重置链接
因此,当用户访问该功能时,我正在尝试为路由 API 和 Web 路由创建忘记密码功能,他将收到一封包含重置密码链接的电子邮件。并且电子邮件中的链接将根据用户使用的路线而有所不同。
例如:当用户访问API路由时,用户会收到链接http://website.com/api/password/reset,当用户访问web路由时会收到链接http://webiste .com/密码/重置
我试过使用Request :: is ('api *')
它,它在本地服务器上运行顺利,但是当我部署到 heroku 时,Request :: is ('api *')
命令不起作用,所以发送的链接指向我Request :: is ('api *')
在里面使用的 web 路由ResetPasswordNotification
上面的命令在本地服务器上运行顺利,没有任何错误,但在 heroku 上不起作用。
我请求你帮助解决这个问题。谢谢你
laravel - 消息“CSRF 令牌不匹配。” 在使用 Laravel sanctum 令牌 API 时。拉拉维尔 8
我正在尝试使用基于 Laravel sanctum 令牌的身份验证来构建 API。在邮递员上,它工作正常,并提供所需的输出,但对于 VueApp 或任何服务器运行的应用程序,它给了我一个错误响应。像下面
CSRF token mismatch.
我有两条 API 路由。
当使用邮递员访问这些端点时,我得到了所需的输出作为响应,但是当尝试使用 Axios 与 Vue/CLI 应用程序相同时,得到以下响应......
CSRF token mismatch.
php - API 身份验证问题
我正在第一次使用 laravel 创建 API,如果我提到任何不正确的地方,请原谅我,让我知道如何更正它。
我已经按照这篇文章创建 API 身份验证,https://www.toptal.com/laravel/restful-laravel-api-tutorial
现在我可以注册用户,并且根据博客获得 api-token,但是当我尝试使用现有用户登录时,出现以下错误
我也是同样的注销错误。
我正在附加我的登录控制器和 RegisterController,如果您需要更多详细信息并帮助我解决此问题,请告诉我
登录控制器.php
注册控制器.php
laravel - Spatie Laravel 权限。返回具有用户角色和权限的 API 资源
返回 api 资源时出现问题。我正在使用Spatie Laravel 权限。
碰巧在我的特殊情况下,我试图返回一个包含用户详细信息的 api 资源,以及用户拥有的角色和权限。
我的UserResorce.php
我的RoleResource.php
我的PermissionResource.php
正如您在文件中看到的那样,我只在真正需要它们UserResource.php
时才加载roles
and 。permissions
这样,如果我执行以下操作:
我得到以下结果:
因此,要加载相同的结果,但这次使用与用户关联的角色,我执行以下操作:
正如预期的那样,我得到以下结果:
现在我的问题如下,为了获取用户角色和权限,我执行了以下操作:
但是我在键中得到了一个空对象"permissions"
,所以我更仔细地分析了,是用户拥有的权限是由他们定义的role
,我查看了文档,我看到我可以使用getAllPermissions()
方法获得用户的所有权限。所以我做了以下事情:
但是通过这种方式,它也加载了permissions
角色关系,它会得到一个意想不到的结果,如下所示:
这不是预期的结果,因为我在执行时期望的结果:
应通过以下方式:
并在执行时:
我期待以下结果:
有人可以帮我解决这个问题吗?非常感谢您提前。
laravel - Laravel Spatie 权限获取用户资源及其角色和权限
我正在写作,因为我已经花费了数小时的测试来寻找问题的解决方案,但我仍然没有找到解决方法。我正在使用Spatie Laravel 权限,碰巧我有 3 个资源,一个用于user
,另一个用于role
,另一个用于permissions
。我展示了上述资源的结构:
用户资源.php
角色资源.php
权限资源.php
正如您在我的UserResource.php
文件中看到的那样,我正在定义一个结构以仅在需要时显示用户角色和权限。您还可以看到,在permissions
密钥中,我不仅返回与用户关联的权限,而是返回与用户直接关联并与他们拥有的角色关联的所有权限getAllPermissions()
。
现在看RoleResource.php
文件,我定义的是与角色关联的权限仅在必要时才会显示,这就是我的问题。当我执行以下操作时:
我收到以下回复:
看看 key: roles
,它向我展示了permissions
关系,这不是预期的结果,我希望它只有在我执行以下操作时才会向我展示该结果:
我一直在做很多测试,一切似乎都表明当我调用该方法时getAllPermissions()
也会加载permissions
关系,这就是发生这种情况的原因。请你帮我解决这个问题。非常感谢您提前。
reactjs - React Axios 的 Laravel 8 CORS 问题
我将我的 API(使用 Laravel 8 框架构建)托管在一个子域 - webapi.somedomain.com 中。我正在运行使用 React 框架和 Axios 库为 HTTP 请求构建的本地版本的前端 UI。我在共享主机空间 (cPanel + CentOS) 中进行了托管,我在访问托管 API 时遇到了问题。我已经说明了我在下面看到的错误:
Access to XMLHttpRequest at 'http://webapi.somedomain.com/api/authorization/signup' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
所以我添加了 Laravel 自定义 CORS 中间件;使用 . 更新文件并清除缓存php artisan config:cache
。没有成功。找不到其他资源。所以我添加了 Laravel CORS 包 - fruitcake/laravel-cors
. 已安装、发布并添加到中间件;更新文件并清除缓存。但是当我从我的 React 项目中访问 API 时,我仍然看到了 CORS 错误
配置/cors.php:
内核.php:
我只是 Laravel 的初学者。我究竟做错了什么?有人可以帮我吗?提前致谢。
PS:我完全理解 CORS 是什么以及它是如何工作的。我是 Laravel 的新手。对开发并不陌生。我想知道我还应该做什么,以及我是否遗漏了什么。
ionic-framework - 413 Payload Too Large in ionic api 调用
我是离子新手。我正在尝试在 laravel 中使用 ionic 和 api 制作应用程序。我正在尝试在正文中发送 base64,但它给了我 413 Payload Too Large。如果我不发送 base64 那么它正在重新调整 201 创建
laravel - 错误:flutter/lib/ui/ui_dart_state.cc(177) 未处理的异常:NoSuchMethodError:在 null 上调用了 getter 'length'
我正在尝试使用颤振和 laravel api 构建应用程序。login
在我开始实现该功能之前一切都很好。我收到这个错误[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null.
你能告诉我我的代码有什么问题吗?万一我犯了一个愚蠢的错误,请不要生气,我才刚刚开始编程。非常感谢!登录功能代码
laravel - Laravel API:验证不访问我的 API 中的 PUT 请求数据
语境
我正在使用PUT
Laravel 8 中的请求实现用户信息更新。我使用 Postman 发送请求并查看结果。
预期行为
我的PUT
请求到达了控制器的功能,该功能被许可更新经过身份验证的用户。后者更新成功。因此validate
调用成功执行并在请求中找到数据。
实际行为
我的PUT
请求到达了控制器的功能,该功能被许可更新经过身份验证的用户。后者没有成功更新。实际上,validate
调用成功执行了,但没有在请求中找到数据。
相反,数据验证说:
{ "message": "给定的数据无效。", "errors": { "email": [ "email field is required." ], "name": [ "名称字段为必填项。" ] } }
路线和请求
邮递员请求
这意味着在 Postman 术语中没有发送“Params”,发送了 Authorization Bearer 令牌,发送了一些 Headers 并且发送了一些 Body 的 x-www-form-urlencoded 数据。
API 路由
在routes/api.php
:
Route::put('/set_user_data', [UserController::class, 'setUserData'])->name('set_user_data');
UserController::setUserData
:
我试图做的……或不做的事
Stackoverflow 的一些答案是:发送
POST
请求并在正文中发送_method=PUT
。我不想这样做。我真的更喜欢发送PUT
请求。因为我正在开发一个 API。这完全证明了我必须使用PUT
请求而不是请求这一事实PUT
。Stackoverflow 的一些答案是:
x-www-form-urlencoded
不要使用简单的form
. 它不能解决问题;而且已经是这样了。也许它可以帮助发送图像。(注意我不想在这里发送任何图像)。
问题
为什么 Laravelvalidate
找不到我请求的数据以及如何解决?