suzy1031 / everyday-study-app

0 stars 0 forks source link

[ver2.0]Authentication、redis、foreman設定 #24

Closed suzy1031 closed 3 years ago

suzy1031 commented 3 years ago

storeを追加 store / store.jsを新規作成 application.jsにimportする

import Store from './store/store.js';

export default {
store: Store // jsをimportした場合は、key: value形式で書く undefinedエラーになるので
}

gem追加

gem 'bcrypt'
gem 'jwt_sessions'
#[jwt_sessions]のデフォルトのメモリーストア
gem 'redis'

group :development do
  ~省略~
  gem 'foreman'
end

PCにredisをインストール

brew install redis

redisをトークンストアとしてrailsに登録

-config.cache_store = :memory_store
+config.cache_store = :redis_store, 'redis://localhost:6379/0/cache', { expires_in: 90.minutes }

foreman使う Procfile.dev作成

web: bundle exec rails s
webpacker: ./bin/webpack-dev-server
redis: bundle exec redis-server /usr/local/etc/redis.conf

この3つのコマンドまとめて実行

bin/server作成

#!/bin/bash -i
bundle install
bundle exec foreman start -f Procfile.dev

-f オプション

環境ごとに Procfile を変えたいときは -f オプションでファイルを指定する。
-f を付与して「Procfile.dev」を呼び出す

権限777をchmodコマンドで付与

localhost:5000にアクセス

$ bin/server

===== undefined method `protect_from_forgery' for Api::StudiesController:Class

-class Api::StudiesController < ApiController
+class Api::StudiesController < ApplicationController
# アプリケーションコントローラを継承させる

=====

CORS設定

gem 'rack-cors'

bundle installする

# config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'http://localhost:8080', 'http://localhost:3000', 'http://localhost:5000'

    resource '*',
      headers: :any,
      credentials: true,
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end

参考 CORSがよくわからないので解説してみた&Rails APIでのCORS設定

ルートパス(’/‘)をsigninに変更

===== サインアップできない(500 server error) DBには保存できている!

id:1 mail: hoge@hoge.com password: $2a$12$z9ommHlV0bE6o2/bz.SBUuCWZNGU1bPlgSkEV.E9C8p0kVhQ6kdAO created_at: ・・・

redis起動していない? →起動させる

signin、signup成功した後の遷移処理のパスがおかしい? →this.$router.replace('/Record')に変更

ログインできた!

=====

Setting.vue log outボタン実装

<a href="/" v-if="signedIn" @click="signOut" class="study-time-button logout">Logout</a>
# ログイン画面へリダイレクトできる
# 開発者ツール > Application > Local Storageに`signedIn`と`csrf`がログアウトするとdeleteされる
suzy1031 commented 3 years ago

サーバ起動しない

16:37:02 redis.1     | 14306:M 18 Dec 2020 16:37:02.835 # Could not create server TCP listening socket 127.0.0.1:6379: bind: Address already in use

原因 既にredisを起動している為

brew services start redis
brew services list
redis      error   sugawarakouhei /Users/sugawarakouhei/Library/LaunchAgents/homebrew.mxcl.redis.plist
# なぜかstatusがerror...
# 自動起動設定はせず、bin/serverコマンドで起動させる
brew services stop redis
Stopping `redis`... (might take a while)
==> Successfully stopped `redis` (label: homebrew.mxcl.redis)

bin/server
~~省略~~
16:38:45 redis.1     | 16336:M 18 Dec 2020 16:38:45.516 * Ready to accept connections
~~省略~~
16:38:49 web.1       | * Listening on tcp://localhost:5000
~~省略~~
16:38:57 webpacker.1 | i「wdm」: Compiled successfully.
~~省略~~

# ブラウザでlocalhost:500に接続