質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

1回答

2891閲覧

[Rails]AWSでログアウト処理をしてもログアウトされない

maki_k

総合スコア17

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

2クリップ

投稿2018/05/08 02:06

Rails 5.1.4
ruby 2.5.0
authlogic 3.8.0
Nginx + puma

authlogicを使って認証処理を実装しています。

自分の開発環境(vagrant+VirtualBox+CentOS7.2)では正常にログアウトされますが、
AWS上の検証環境でChrome,Operaの時はログアウトされません。
ログアウトボタンを押下後、URL直打ちでログイン後のアドレスにアクセスすると
ログイン画面にリダイレクトされず、アクセスできてしまいます。
(FireFox, Edge, IEではログアウトされます)

ローカルのRAILS_ENVproductionnginx + pumaにして試してみましたが、
やはり正常にログアウトが行われます。

お知恵を拝借できますと幸いです。
どうぞよろしくお願い致します。

ruby

1class UserSessionsController < ApplicationController 2 protect_from_forgery :except => [:create] 3 4 def create 5 @user_session = UserSession.new(user_session_params) 6 if @user_session.save 7 redirect_to hoge_path 8 else 9 render :action => :index 10 end 11 end 12 13 def destroy 14 current_user_session.destroy 15 redirect_to root_path 16 end 17end

ruby

1class ApplicationController < ActionController::Base 2 protect_from_forgery with: :exception 3 helper_method :current_user_session, :current_user 4 5 private 6 def current_user_session 7 return @current_user_session if defined?(@current_user_session) 8 @current_user_session = UserSession.find 9 end 10 11 def current_user 12 return @current_user if defined?(@current_user) 13 @current_user = current_user_session && current_user_session.user 14 end 15end

ruby

1class UserSession < Authlogic::Session::Base 2 httponly true 3 secure true 4end 5

ruby

1class User < ApplicationRecord 2 acts_as_authentic do |c| 3 c.session_class = UserSession 4 end 5end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

set0gut1

2018/05/08 03:32

Chromeの開発者ツールのコンソールにエラーログ出てたりしませんでしょうか
maki_k

2018/05/08 08:09

ご一考ありがとうございます。 Chromeのデベロッパーツールのコンソールにはエラーは出ていませんでした。
guest

回答1

0

自己解決

もっと早く気付くべきだったのですが、
production.logに、
HTTP Origin header (https://hoge.com) didn’t match request.base_url(http://hoge.com)エラーが出ていました。
この為、nginxのhoge.confを下記のように修正することで直りました。

誤:proxy_set_header X-Forwarded-Proto $scheme;
正:proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;

参考リンク
https://taiyuf.tumblr.com/post/162554203956/rails-5%E3%81%A7http-origin-header-url-didnt-match
https://qiita.com/HeRo/items/7063b86b5e8a2efde0f4

投稿2018/05/08 08:10

maki_k

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問