【发布时间】:2018-10-26 01:46:05
【问题描述】:
我必须在 Laravel 中使用:php artisan make:auth 进行默认登录,并且我想使用 API 再添加 1 个身份验证。在这个身份验证 API 中,我不需要登录数据库。
这种情况有什么解决办法吗?
我想制作自定义提供程序并保护它,但我在App\Auth 上被困在AlumniAuthProvider.php:
<?php
namespace App\Auth;
use Illuminate\Contracts\Auth\User as UserContract;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;
use App\Auth\User;
class AlumniAuthProvider implements UserProvider {
public function alumni()
{
}
public function retrieveById($identifier)
{
}
public function retrieveByToken($identifier, $token)
{
}
public function updateRememberToken(Authenticatable $user, $token)
{
}
public function retrieveByCredentials(array $credentials)
{
}
public function validateCredentials(Authenticatable $user, array $credentials)
{
}
}
和Alumni.php App\Auth:
<?php
namespace App\Auth;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Http\Request;
class Alumni implements Authenticatable
{
public function getAuthIdentifierName()
{
}
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
}
/**
* Get the token value for the "remember me" session.
*
* @return string
*/
public function getRememberToken()
{
}
/**
* Set the token value for the "remember me" session.
*
* @param string $value
* @return void
*/
public function setRememberToken($value)
{
}
/**
* Get the column name for the "remember me" token.
*
* @return string
*/
public function getRememberTokenName()
{
}
}
如何进行自定义 API 登录?
在我看来,我制作的这段代码是用于第二次身份验证,还是我错了?请问有没有其他方法可以解决这个问题?
【问题讨论】:
-
我认为在没有数据库的情况下进行 api 登录是一个坏主意,因为每次用户通过另一个系统登录时,都会发生 api 调用,这会在您的系统上线时产生更多流量。更好的方法是第一次调用api并将数据存储在数据库中,然后在用户重新登录时从数据库中调用数据。
-
感谢@parthu_panther 的建议,但我使用带有响应令牌 jwt 的 api,将其保存在数据库中是否好?如果是的话,我该如何实现?使用会话、cookies 还是直接存储在数据库中?请帮助你。
-
如果您使用的是 Java Web 令牌,请不要担心。您可以在会话中设置令牌,并在数据库中设置您的用户登录凭据。
-
哦,帮我,我会用的
-
@parthu_panther,您认为 API 登录意味着什么?你不认为它也在某处或其他地方使用数据库。
标签: php laravel authentication