teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

使用エディタ追加

2021/01/02 11:22

投稿

AkitoshiShiga
AkitoshiShiga

スコア6

title CHANGED
File without changes
body CHANGED
@@ -2,13 +2,14 @@
2
2
  Laravel8でSanctumを用いた認証機能を実装中です。
3
3
  フロントでVue.jsを用いており、そこからaxiosで認証情報をjson形式でリクエストに追加して、Laravel側にPOSTメソッドを送っています。
4
4
  リクエストはLaravelのルーティング機能を介してコントローラに渡され、App\Models\UserがSanctumのHashApiTokensのトレイトを使用することでアクセストークンを発行する処理を実装しましたが、
5
- Userで参照しているはずのHshApiTokensを使用できない状況です。
5
+ Userで参照しているはずのHashApiTokensを使用できない状況です。
6
6
  ググって出てきたものは全て試してみましたが、解決していない状況です。
7
7
  ### 実現したいこと
8
8
  * User内でHashApiTokensの参照
9
9
  * コントローラー内でHashApiTokensを用いたトークンの発行
10
10
 
11
11
  ### 環境
12
+ * エディタPhpStorm、VSコード
12
13
  ##docker-composeを用いて以下のイメージで作成したコンテナを使用
13
14
  ### php_8.0
14
15
  * Laravel_8

2

HashApiTokensのソースコードを追加

2021/01/02 11:22

投稿

AkitoshiShiga
AkitoshiShiga

スコア6

title CHANGED
File without changes
body CHANGED
@@ -81,6 +81,86 @@
81
81
 
82
82
  ```
83
83
  ```php
84
+ HashApiTokens
85
+ <?php
86
+
87
+ namespace Laravel\Sanctum;
88
+
89
+ use Illuminate\Support\Str;
90
+
91
+ trait HasApiTokens
92
+ {
93
+ /**
94
+ * The access token the user is using for the current request.
95
+ *
96
+ * @var \Laravel\Sanctum\Contracts\HasAbilities
97
+ */
98
+ protected $accessToken;
99
+
100
+ /**
101
+ * Get the access tokens that belong to model.
102
+ *
103
+ * @return \Illuminate\Database\Eloquent\Relations\MorphMany
104
+ */
105
+ public function tokens()
106
+ {
107
+ return $this->morphMany(Sanctum::$personalAccessTokenModel, 'tokenable');
108
+ }
109
+
110
+ /**
111
+ * Determine if the current API token has a given scope.
112
+ *
113
+ * @param string $ability
114
+ * @return bool
115
+ */
116
+ public function tokenCan(string $ability)
117
+ {
118
+ return $this->accessToken ? $this->accessToken->can($ability) : false;
119
+ }
120
+
121
+ /**
122
+ * Create a new personal access token for the user.
123
+ *
124
+ * @param string $name
125
+ * @param array $abilities
126
+ * @return \Laravel\Sanctum\NewAccessToken
127
+ */
128
+ public function createToken(string $name, array $abilities = ['*'])//これをUserの関数としてコントローラーから呼び出したい
129
+ {
130
+ $token = $this->tokens()->create([
131
+ 'name' => $name,
132
+ 'token' => hash('sha256', $plainTextToken = Str::random(40)),
133
+ 'abilities' => $abilities,
134
+ ]);
135
+
136
+ return new NewAccessToken($token, $token->id.'|'.$plainTextToken);
137
+ }
138
+
139
+ /**
140
+ * Get the access token currently associated with the user.
141
+ *
142
+ * @return \Laravel\Sanctum\Contracts\HasAbilities
143
+ */
144
+ public function currentAccessToken()
145
+ {
146
+ return $this->accessToken;
147
+ }
148
+
149
+ /**
150
+ * Set the current access token for the user.
151
+ *
152
+ * @param \Laravel\Sanctum\Contracts\HasAbilities $accessToken
153
+ * @return $this
154
+ */
155
+ public function withAccessToken($accessToken)
156
+ {
157
+ $this->accessToken = $accessToken;
158
+
159
+ return $this;
160
+ }
161
+ }
162
+ ```
163
+ ```php
84
164
  ソースコード_コントローラー
85
165
  <?php
86
166
 

1

誤字の修正

2021/01/02 10:31

投稿

AkitoshiShiga
AkitoshiShiga

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,12 @@
1
- ### 前提・実現したいこと
1
+ ### 前提
2
2
  Laravel8でSanctumを用いた認証機能を実装中です。
3
- フロントでVue.jsを用いており、そこからaxiosで認証情報をjson形式でリクエストに追加して、Laravel側にリクエストを送っています。
3
+ フロントでVue.jsを用いており、そこからaxiosで認証情報をjson形式でリクエストに追加して、Laravel側にPOSTメソッドを送っています。
4
4
  リクエストはLaravelのルーティング機能を介してコントローラに渡され、App\Models\UserがSanctumのHashApiTokensのトレイトを使用することでアクセストークンを発行する処理を実装しましたが、
5
5
  Userで参照しているはずのHshApiTokensを使用できない状況です。
6
6
  ググって出てきたものは全て試してみましたが、解決していない状況です。
7
+ ### 実現したいこと
8
+ * User内でHashApiTokensの参照
9
+ * コントローラー内でHashApiTokensを用いたトークンの発行
7
10
 
8
11
  ### 環境
9
12
  ##docker-composeを用いて以下のイメージで作成したコンテナを使用
@@ -164,7 +167,7 @@
164
167
  ### 試したこと
165
168
  #### docker-compose exec でプロジェクトのディレクトリに入り以下を実行
166
169
  * composer require laravel/sanctum
167
- * php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
170
+ * php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
168
171
  * composer dump-autoload
169
172
  * php artisan cache:clear
170
173
  * php artisan config:clear