नमस्ते, मुझे यहाँ पर कुछ के समान त्रुटि हो रही है, लेकिन मुझे लगता है कि मूल कारण अलग है, क्योंकि मुझे जो कोई समाधान नहीं मिला है, उसने काम किया है। मूल रूप से मैं एक छोटी परियोजना पर रेल में डेविस का उपयोग कर रहा हूं, और हालांकि साइन_अप पेज का उपयोग करना ठीक काम करता है (उपयोगकर्ता को डीबी में रखा गया है), साइन_इन पेज उपयोगकर्ता को ढूंढता है लेकिन उन्हें वर्तमान उपयोगकर्ता के रूप में सेट नहीं करता है। आउट-ऑफ-द-बॉक्स समाधान से केवल एक चीज जो मैंने बदली है वह है: उपयोगकर्ता नाम का उपयोग प्रमाणीकरण कुंजी के रूप में नहीं: ईमेल।

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!

जो वापस साइन_इन पर रीडायरेक्ट कर रहा है क्योंकि प्रमाणीकरण विफल हो रहा है।

किसी भी सलाह के लिए धन्यवाद!

0
Paul Harker 12 अगस्त 2020, 08:25

1 उत्तर

सबसे बढ़िया उत्तर

इसे यहां रखकर अगर किसी और को इस मुद्दे का सामना करना पड़ता है।

यदि आप स्टिमुलस रिफ्लेक्स का उपयोग कर रहे हैं, तो यह वर्तमान में रेल कुकी_स्टोर को अक्षम कर देता है और इसके बजाय कैश_स्टोर का उपयोग करता है। आप या तो वापस स्विच कर सकते हैं:

config.session_store :cache_store

रेल डिफ़ॉल्ट पर वापस

config.session_store :cookie_store

या अपने विकास परिवेश में cache_store को सक्षम करने के लिए rails dev:cache चलाएँ।

0
Paul Harker 12 अगस्त 2020, 17:57