Rails4にてログイン機能の実装をしています。
Deviseによる通常の会員登録画面からサイトの会員トップページに飛ぶよう設定しており、またFacebookログインにおいてもそのようにしています。
しかし、sign_in及びsign_up、Facebook認証にアクセスすると、
このウェブページにはリダイレクト ループが含まれています
ERR_TOO_MANY_REDIRECTS
というエラーが出てしまいます。
redirect_to,root :toの設定先、またはパスに問題があるのではないかと考えているのですが、解決しないため、投稿させていただきました。
下記に該当箇所及びパスの画像を載せますので、よろしくお願いいたします。
config/routes.rb
Ruby
1Rails.application.routes.draw do 2 resources :users 3 4 authenticated :user do 5 root :to => 'users#index' 6 end 7 8 unauthenticated :user do 9 devise_scope :user do 10 get "/" => "devise/sessions#new" 11 end 12 end 13 14 resources :conversations do 15 resources :messages 16 end 17 18 devise_for :users, :controllers => { 19 sessions: 'users/sessions', 20 registrations: 'users/registrations', 21 omniauth_callbacks: 'users/omniauth_callbacks'} 22 23end
controllers/users_controller.rb
Ruby
1class UsersController < ApplicationController 2 before_filter :authenticate_user! 3 before_action :set_user, only: [:show, :edit, :update, :destroy] 4 5 # GET /users 6 # GET /users.json 7 def index 8 @users = User.where.not("id = ?",current_user.id).order("created_at DESC") 9 @conversations = Conversation.involving(current_user).order("created_at DESC") 10 end 11 12 # GET /users/1 13 # GET /users/1.json 14 def show 15 16 end 17 18 # GET /users/new 19 def new 20 @user = User.new 21 end 22 23 # GET /users/1/edit 24 def edit 25 end 26 27 # POST /users 28 # POST /users.json 29 def create 30 @user = User.new(user_params) 31 32 respond_to do |format| 33 if @user.save 34 format.html { redirect_to @user, notice: 'User was successfully created.' } 35 format.json { render :show, status: :created, location: @user } 36 else 37 format.html { render :new } 38 format.json { render json: @user.errors, status: :unprocessable_entity } 39 end 40 end 41 42 43 end 44 45 # PATCH/PUT /users/1 46 # PATCH/PUT /users/1.json 47 def update 48 respond_to do |format| 49 if @user.update(user_params) 50 format.html { redirect_to @user, notice: 'User was successfully updated.' } 51 format.json { render :show, status: :ok, location: @user } 52 else 53 format.html { render :edit } 54 format.json { render json: @user.errors, status: :unprocessable_entity } 55 end 56 end 57 end 58 59 # DELETE /users/1 60 # DELETE /users/1.json 61 def destroy 62 @user.destroy 63 respond_to do |format| 64 format.html { redirect_to users_url, notice: 'User was successfully destroyed.' } 65 format.json { head :no_content } 66 end 67 end 68 69 private 70 # Use callbacks to share common setup or constraints between actions. 71 def set_user 72 @user = User.find(params[:id]) 73 end 74 75 # Never trust parameters from the scary internet, only allow the white list through. 76 def user_params 77 params.require(:user).permit(:name, :email,:part_1,:user_id,:Birth_date,:gender,:start_at_part_1,:start_at_part_2,:current_place,:start_at_band) 78 end 79end 80
controllers/users/omniauth_callbacks_controller.rb
Ruby
1class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 2 def facebook 3 callback_from :facebook 4 end 5 6 def twitter 7 callback_from :twitter 8 end 9 10 private 11 def callback_from(provider) 12 provider = provider.to_s 13 @user = User.find_for_oauth(request.env['omniauth.auth']) 14 if @user.persisted? 15 cookies.permanent[:xxx_logined] = { value: @user.created_at } 16 flash[:notice] = I18n.t('devise.omniauth_callbacks.success', kind: provider.capitalize) 17 sign_in_and_redirect @user, event: :authentication 18 else 19 if provider == 'twitter' 20 session["devise.twitter_data"] = request.env["omniauth.auth"].except("extra") 21 else 22 session["devise.facebook_data"] = request.env["omniauth.auth"] 23 end 24 redirect_to new_user_registration_url 25 end 26 end 27end
あなたの回答
tips
プレビュー