質問編集履歴

3

試したことをさらに追記

2021/06/29 22:43

投稿

kiyomasa
kiyomasa

スコア40

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  なぜsession[:user_id]がnilになってしまうのでしょうか?
18
18
 
19
+ (cookieは同じ値で飛んでいる気がします)
20
+
19
21
 
20
22
 
21
23
  ##試したこと
@@ -54,11 +56,23 @@
54
56
 
55
57
  => nil
56
58
 
57
- [4] pry(#<Api::V1::SessionsController>)> @user
58
-
59
- => nil
60
-
61
- ```
59
+ ```
60
+
61
+
62
+
63
+ ##6/30追記
64
+
65
+ デバックツールで確認したところsessions_controller.application_controller共にメソッド自体は機能している模様ですが、
66
+
67
+ session[:user_id]はnilのままです。
68
+
69
+
70
+
71
+ cookieも同じ値が行っているのですが、sessionがうまくいきません。
72
+
73
+
74
+
75
+
62
76
 
63
77
 
64
78
 
@@ -274,6 +288,8 @@
274
288
 
275
289
 
276
290
 
291
+
292
+
277
293
  フロントエンド ログイン部のuseAuth
278
294
 
279
295
 
@@ -505,3 +521,41 @@
505
521
  ![イメージ説明](e6b8922e25ec4771a34f60b4853af2b0.png)
506
522
 
507
523
  ※同一cookie
524
+
525
+
526
+
527
+ cors.rb
528
+
529
+
530
+
531
+ ```
532
+
533
+
534
+
535
+ Rails.application.config.middleware.insert_before 0, Rack::Cors do
536
+
537
+ # ローカル環境
538
+
539
+ allow do
540
+
541
+ origins "http://localhost:3001"
542
+
543
+
544
+
545
+ resource "*",
546
+
547
+ headers: :any,
548
+
549
+ methods: [:get, :post, :put, :patch, :delete, :options, :head],
550
+
551
+ credentials: true
552
+
553
+ end
554
+
555
+ end
556
+
557
+ ```
558
+
559
+
560
+
561
+ ひたすらに詰まっております、、、わかる方がいらっしゃればご回答いただけると嬉しいです。。

2

sessions_store.rbを変更追加

2021/06/29 22:43

投稿

kiyomasa
kiyomasa

スコア40

test CHANGED
File without changes
test CHANGED
@@ -475,3 +475,33 @@
475
475
  logged_inメソッド実行のブラウザのネットワーク部
476
476
 
477
477
  ![イメージ説明](e08e1627c624bea3d155aa4e90402bc7.png)
478
+
479
+
480
+
481
+ sessions_store.rbでフロントエンドのドメインを変更し、cookieの保持は可能になりました。
482
+
483
+
484
+
485
+ ```
486
+
487
+ if Rails.env === 'production'
488
+
489
+ Rails.application.config.session_store :cookie_store, key: '_cooklog', domain: 'localhost3001'
490
+
491
+ else
492
+
493
+ Rails.application.config.session_store :cookie_store, key: '_cooklog'
494
+
495
+ end
496
+
497
+ ```
498
+
499
+
500
+
501
+ ![イメージ説明](c1cd86fbf42fedea1b28fdd13e727949.png)
502
+
503
+
504
+
505
+ ![イメージ説明](e6b8922e25ec4771a34f60b4853af2b0.png)
506
+
507
+ ※同一cookie

1

railsとの繋がりの部分の記載を追加

2021/06/27 01:08

投稿

kiyomasa
kiyomasa

スコア40

test CHANGED
File without changes
test CHANGED
@@ -267,3 +267,211 @@
267
267
 
268
268
 
269
269
  https://teratail.com/questions/345569
270
+
271
+
272
+
273
+ ##追加のコード
274
+
275
+
276
+
277
+ フロントエンド ログイン部のuseAuth
278
+
279
+
280
+
281
+ ```
282
+
283
+ /* eslint-disable react-hooks/exhaustive-deps */
284
+
285
+ import { useCallback, useState } from "react";
286
+
287
+ import axios from "axios";
288
+
289
+ import { useHistory } from "react-router-dom";
290
+
291
+
292
+
293
+ import { useMessage } from "./useMessege";
294
+
295
+ import { useLoginUser } from "./useLoginUser"
296
+
297
+
298
+
299
+ import { loginURL } from '../urls/index'
300
+
301
+
302
+
303
+ export const useAuth = () => {
304
+
305
+ const history = useHistory();
306
+
307
+ const { showMessage } = useMessage();
308
+
309
+ const { setLoginUser } = useLoginUser();
310
+
311
+
312
+
313
+ const [loading, setLoading] = useState(false);
314
+
315
+
316
+
317
+
318
+
319
+ const login = useCallback((data) => {
320
+
321
+ setLoading(true);
322
+
323
+ //ローディングアイコンをtrueに
324
+
325
+ axios.post(loginURL,
326
+
327
+ {
328
+
329
+ user: {
330
+
331
+ email: data.email,
332
+
333
+ password: data.password,
334
+
335
+ }
336
+
337
+ },
338
+
339
+ { withCredentials: true }
340
+
341
+ ).then(response => {
342
+
343
+ if (response.data.logged_in) {
344
+
345
+ // contextにログインユーザーの情報を保存
346
+
347
+ setLoginUser(response.data)
348
+
349
+ // handleSuccessfulAuth(response.data);
350
+
351
+ showMessage({ title: "ログインしました", status: "success" });
352
+
353
+ history.push("/mypage");
354
+
355
+ // apiを叩き成功したらメソッドが起動し、data(userのデータ)をmypageに渡してページ遷移する
356
+
357
+ }
358
+
359
+ // 認証できなかった時のエラー
360
+
361
+ else if (response.data.status === 401) {
362
+
363
+ showMessage({ title: `${response.data.errors}`, status: "error" });
364
+
365
+ }
366
+
367
+ // うまくpostできなかった時のエラー
368
+
369
+ }).catch((e) => {
370
+
371
+ showMessage({ title: "認証できませんでした。再度リロードなどを行いやり直して下さい", status: "error" });
372
+
373
+ setLoading(false);
374
+
375
+ })
376
+
377
+ }, [history, showMessage, setLoginUser]);
378
+
379
+
380
+
381
+ return { login, loading };
382
+
383
+ };
384
+
385
+ ```
386
+
387
+
388
+
389
+ ログインをチェックするuseAuthCheck
390
+
391
+ ```
392
+
393
+ /* eslint-disable react-hooks/exhaustive-deps */
394
+
395
+ import { useCallback } from "react"
396
+
397
+ import axios from "axios";
398
+
399
+ import { useHistory } from "react-router-dom";
400
+
401
+
402
+
403
+ import { useMessage } from "./useMessege";
404
+
405
+ import { useLoginUser } from "./useLoginUser"
406
+
407
+ import { logged_inURL } from '../urls/index'
408
+
409
+
410
+
411
+ export const useAuthCheck = () => {
412
+
413
+ const { setLoginUser } = useLoginUser();
414
+
415
+ const history = useHistory();
416
+
417
+ const { showMessage } = useMessage();
418
+
419
+
420
+
421
+
422
+
423
+ const CheckAuth = useCallback(() => {
424
+
425
+ axios
426
+
427
+ .get(logged_inURL,{ withCredentials: true })
428
+
429
+ .then(response => {
430
+
431
+ if (response.data.logged_in === true) {
432
+
433
+ setLoginUser(response.data.user)
434
+
435
+ }
436
+
437
+ // 認証できなかった時のエラー
438
+
439
+ else if (response.data.logged_in === false) {
440
+
441
+ showMessage({ title: `${response.data.errors}`, status: "error" });
442
+
443
+ history.push("/login");
444
+
445
+ console.log(response.data.session)
446
+
447
+ console.log(response.data.user)
448
+
449
+ }
450
+
451
+ // うまくpostできなかった時のエラー
452
+
453
+ }).catch((e) => {
454
+
455
+ showMessage({ title: "再度送信して下さい", status: "error" });
456
+
457
+ })
458
+
459
+ }, []);
460
+
461
+ return { CheckAuth };
462
+
463
+ }
464
+
465
+ ```
466
+
467
+
468
+
469
+ loginメソッド実行のブラウザのネットワーク
470
+
471
+ ![イメージ説明](21517a56267d07f33dce01bc70d359c5.png)
472
+
473
+
474
+
475
+ logged_inメソッド実行のブラウザのネットワーク部
476
+
477
+ ![イメージ説明](e08e1627c624bea3d155aa4e90402bc7.png)