नमस्ते, मुझे यहाँ पर कुछ के समान त्रुटि हो रही है, लेकिन मुझे लगता है कि मूल कारण अलग है, क्योंकि मुझे जो कोई समाधान नहीं मिला है, उसने काम किया है। मूल रूप से मैं एक छोटी परियोजना पर रेल में डेविस का उपयोग कर रहा हूं, और हालांकि साइन_अप पेज का उपयोग करना ठीक काम करता है (उपयोगकर्ता को डीबी में रखा गया है), साइन_इन पेज उपयोगकर्ता को ढूंढता है लेकिन उन्हें वर्तमान उपयोगकर्ता के रूप में सेट नहीं करता है। आउट-ऑफ-द-बॉक्स समाधान से केवल एक चीज जो मैंने बदली है वह है: उपयोगकर्ता नाम का उपयोग प्रमाणीकरण कुंजी के रूप में नहीं: ईमेल।
class ApplicationController < ActionController::Base
protect_from_forgery prepend: true
skip_before_action :verify_authenticity_token
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) }
devise_parameter_sanitizer.permit(:sign_in) { |u| u.permit(:username, :password, :remember_me) }
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:username, :email, :password, :current_password) }
end
end
मेरे प्रारंभकर्ता/devise.rb में:
config.authentication_keys = [:username]
config.case_insensitive_keys = [:username]
config.strip_whitespace_keys = [:username]
उपयोगकर्ता मॉडल
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
def email_required?
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
end
और कंसोल का आउटपुट नीचे दिखाया गया है:
Started POST "/users/sign_in" for ::1 at 2020-08-11 17:12:53 +0100
Processing by Devise::SessionsController#create as HTML
Parameters: {"authenticity_token"=>"EbXx8CI0+FsF1HkNwHqsUW09BJ0HOW2lJDjWmJEc03d0AeaBOWVxNFpupUA+qLKIsiVMZ9kfbmCZidZMZIKoXA==", "user"=>{"username"=>"bob", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."username" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["username", "bob"], ["LIMIT", 1]]
Redirected to http://localhost:3031/
Completed 302 Found in 103ms (ActiveRecord: 0.4ms | Allocations: 3788)
Started GET "/" for ::1 at 2020-08-11 17:12:53 +0100
Processing by BoardsController#index as HTML
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms | Allocations: 248)
और बोर्ड नियंत्रक के पास बस है:
before_action :authenticate_user!
जो वापस साइन_इन पर रीडायरेक्ट कर रहा है क्योंकि प्रमाणीकरण विफल हो रहा है।
किसी भी सलाह के लिए धन्यवाद!
1 उत्तर
इसे यहां रखकर अगर किसी और को इस मुद्दे का सामना करना पड़ता है।
यदि आप स्टिमुलस रिफ्लेक्स का उपयोग कर रहे हैं, तो यह वर्तमान में रेल कुकी_स्टोर को अक्षम कर देता है और इसके बजाय कैश_स्टोर का उपयोग करता है। आप या तो वापस स्विच कर सकते हैं:
config.session_store :cache_store
रेल डिफ़ॉल्ट पर वापस
config.session_store :cookie_store
या अपने विकास परिवेश में cache_store को सक्षम करने के लिए rails dev:cache
चलाएँ।
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।