【问题标题】:How to do auth without database in Laravel 5.6?如何在 Laravel 5.6 中没有数据库的情况下进行身份验证?
【发布时间】: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


【解决方案1】:

我认为在没有数据库的情况下进行 api 登录是个坏主意,因为每次用户通过另一个系统登录时,都会发生 api 调用,这会在您的系统上线时产生更多流量。更好的方法是第一次调用api,将数据存储到数据库中,然后在用户重新登录时从数据库中调用数据。

【讨论】:

  • 如果我们需要在调用登录 API 后使用数据库,那么创建 REST API 的意义何在?
猜你喜欢
  • 2018-11-09
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2020-01-12
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
相关资源
最近更新 更多