我正在try 创建一个API,并在我自己的应用程序(web应用程序和本机移动应用程序)中使用它,并将其用于第三方应用程序(这是为了将来的目的).
我已经阅读了Laravel Passport份文档,我有些怀疑,希望有人能帮助我.
作为一名开发人员,我总是试图找到最好、正确的方法来实现我的项目,并为项目的目的找到合适的包.
Brief explanation of what I want to do:
我想创建一个API,我将在我的网络和移动应用程序中使用我自己的API,我的API有两个端点用于注册和登录students和teachers.他们可以使用邮箱和密码登录.每个用户类型都有自己的信息.教师可以有CV,学生可以看到教师的简历(整个创建和阅读CV's都在我的API中处理),这两种用户类型可以相互通信.我正在使用laravel 6.x版本来构建我的API.在我们的子域中,我们有一个面向开发者的部分,developers可以注册帐户,获得/购买access token,向我的API发出请求并使用它,另一方面,我希望当学生或教师登录到他们的帐户时,API会为该用户生成一个access token,这样我的应用程序就可以使用该令牌,并在每次请求中传递该令牌,以使用户通过身份验证来访问其私有资源,如我们所知的仪表板,API's是无状态的,我们不能使用会话来存储用户凭据,所以我们需要一个访问令牌.
Can Laravel Passport generate the both Developer access token, and User( teacher or student) access token?
Is it correct to use OAuth in here to develop my API? Or can I just use tymondesigns/JWT package for these purposes?
我得说我对Oauth和API based applications都是新手.我读过一些关于Oauth的文章,我对Oauth terminology有点熟悉,但仍然不知道如何正确地实施这个项目.
以下是我的问题:
- Oauth server到底是多少?API托管的是我自己的服务器吗?
- 在Laravel Passport次配置和数据库迁移之后,Laravel Passport次在我的数据库中创建了一些表,如果您能告诉我每个表的用途,我将不胜感激?表名是failed_jobs、oauth_access_tokens、oauth_auth_codes、oauth_clients、oauth_personal_access_clients、oauth_refresh_tokens.
- 我已将我的Laravel应用程序配置为使用Laravel Passport,并在api.php文件中创建了两个Routes
Route::post('login','API\Auth\UserAuthController@login');
Route::post('register','API\Auth\UserAuthController@register');
然后,我创建了UserAuthController.php
文件,并编写了登录和注册方法.他们正在毫无问题地工作.用户注册或登录他们的帐户后,我的代码将生成personal access token.
$token = $user->createToken('authentication')->accessToken;
and then students or teachers can access to the private resources of their own with this access token. Is it right to create a personal access token for my two types of users? What is exactly a personal access token?
I just know you can pass it into request header, and the server will authorize you to access private resources. what I mean by private resources is the endpoints which are protected by API middleware like this:
Route::post('/update-info','API\Auth\UserAuthController@update')->middleware('auth:api');
- 当老师和学生登录他们的帐户时,我创建personal access token是正确的,还是我应该用另一种方式来处理它?!这种方法有效,但如果还有其他方法,我会寻找正确的方法.
- 奇怪的是,每次用户登录时,Laravel Passport都会创建一个令牌,但它不会判断用户是否已经创建了令牌?如果有人可以访问
API
个端点,他们可以向/login端点发出post请求,并创建大量令牌.有问题吗?如何修复它?
- 当我创建personal access token时,我需要将一个参数传递给
createToken($arg)
方法,它存储在oauth_personal_access_clients表中.这样做的目的是什么?它只是为了Laravel Passport目的,还是我将来需要它?
- 我有一些端点不受
auth:api
middleware保护,例如,每个用户访问我的应用程序,他们可以搜索教师姓名和课程,以及,没有必要让他们先登录或注册.我的应用程序中的每个人都可以访问这些端点,并且可以自由搜索和提前搜索某些信息.我的问题是,如果我让每个人都可以访问它,我如何才能访问only My first-party app和third-party app可以访问的这些端点.我的意思是,我不希望人们在没有访问令牌的情况下通过command line或postman或某种工具来访问它们,我希望保护这些端点免受攻击者的攻击,而不是发出大量请求来关闭我的服务器.我如何保护这种端点?我知道我可以每分钟limit requests次,但我不知道限制它?还有别的办法吗?
- Oauth terminology中有一个术语叫做clients,据我所知,clients是web applications或native mobile app之类的应用程序,任何使用我的API的应用程序都叫做clients.我说得对吗?我认为这是针对第三方应用authentication的.在阅读了关于clients的Laravel Passport文档之后,我有点困惑,当我配置Laravel Passport时,它会生成two clients并将它们存储在数据库中.我需要为我的应用程序创建客户端吗?!如何忽略第一方应用程序的授权流just?
- 经过Laravel Passport次配置后,现在我可以看到它为客户端生成了一些默认路由.
/oauth/clients
/oauth/clients/{client-id}
/oauth/authorize
/oauth/token
这routes个有什么用?!我需要他们来创建我的first-party applications吗?
- 正如我所说,这个应用程序的future 目的是让third-party applications人可以访问API,我必须创建一个网页,developers注册一个帐户,并获得/购买token来访问我的API.有没有可能用Laravel Passport来做,或者我应该写我自己的逻辑来让它工作?我需要为我的第三方客户创建客户吗?
非常感谢您的帮助<;3.