【问题标题】:How can increase Laravel Sanctum token length如何增加 Laravel Sanctum 令牌长度
【发布时间】:2021-11-27 06:51:44
【问题描述】:

我得到一个令牌,它有 40 个字符的随机字符串,像这样......

1|z5F4SMYZRxLo8ScUYMmnExdYtQoJ8eaftQevF0Pa

我想要这样的 240 个字符的随机字符串...

1 | nvbqwunxjyxujtnqnqcxzhintxyswmsjdunbmuhkifbncgrucxchzirgkybtbcadrjjtjunroewmpidxwiobcvimbolzcjlmeddvusgqzmcakffyzqllbzihnvbqwunxjyxujtnqnqcxzhintxyswmsjdunbmuhkifbncgrucxchzirgkybtbcadrjjtjunroewmpidxwiobcvimbolzcjlmeddvusgqzmcakffyzqllbzih P>

请帮助我了解如何增加 Laravel Sanctum 令牌的长度

【问题讨论】:

    标签: laravel authentication laravel-sanctum


    【解决方案1】:
    1. 打开文件:app/Models/User.php 然后

    2. 检查此文件是否使用Laravel\Sanctum\HasApiTokens trait

    3. 覆盖方法:createToken 像这样:

      use Illuminate\Database\Eloquent\Factories\HasFactory;
      use Illuminate\Foundation\Auth\User as Authenticatable;
      use Illuminate\Notifications\Notifiable;
      use Illuminate\Support\Str;
      use Laravel\Sanctum\HasApiTokens;
      use Laravel\Sanctum\NewAccessToken;
      
      class User extends Authenticatable
      {
          use HasApiTokens, HasFactory, Notifiable;
      
          /**
           * The attributes that are mass assignable.
           *
           * @var string[]
           */
          protected $fillable = [
              'name',
              'email',
              'password',
          ];
      
          /**
           * The attributes that should be hidden for serialization.
           *
           * @var array
           */
          protected $hidden = [
              'password',
              'remember_token',
          ];
      
          /**
           * The attributes that should be cast.
           *
           * @var array
           */
          protected $casts = [
              'email_verified_at' => 'datetime',
          ];
      
          /**
           * Create a new personal access token for the user.
           *
           * @param  string  $name
           * @param  array  $abilities
           * @return \Laravel\Sanctum\NewAccessToken
           */
          public function createToken(string $name, array $abilities = ['*'])
          {
              $token = $this->tokens()->create([
                  'name' => $name,
                  'token' => hash('sha256', $plainTextToken = Str::random(240)),
                  'abilities' => $abilities,
              ]);
      
              return new NewAccessToken($token, $token->getKey().'|'.$plainTextToken);
          }
        }
      

    你可以使用:

    $user->createToken('your name token')->plainTextToken;
    

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2021-07-02
      • 2017-09-24
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2021-03-30
      • 2021-06-04
      相关资源
      最近更新 更多