Ruby on rails 4 想办法记住我!不起作用
我的Ruby on rails 4 想办法记住我!不起作用,ruby-on-rails-4,devise,Ruby On Rails 4,Devise,我的sessions\u controller.rb文件中有以下代码: module V1 class Users::SessionsController < Devise::SessionsController # POST /sign_in def new user = User.find_by_email(params[:user][:email]) if params[:user] if user && user.va
sessions\u controller.rb文件中有以下代码:
module V1
class Users::SessionsController < Devise::SessionsController
# POST /sign_in
def new
user = User.find_by_email(params[:user][:email]) if params[:user]
if user && user.valid_password?(params[:user][:password])
sign_in(:user, user)
current_user.remember_me!
head 200
else
render status: 200, json: {errors: ["Incorrect email / username or password."]}.as_json
end
end
# ...
end
end
class User < ActiveRecord::Base
has_many :posts
has_many :comments
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :email, presence: true, uniqueness: true
validates :password, confirmation: true, presence: true
validates :password_confirmation, presence: true
end
Rails.application.routes.draw do
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
devise_scope :user do
post "sign_in", to: "v1/users/sessions#new"
delete "sign_out", to: "v1/users/sessions#destroy"
post "register", to: "v1/users/registrations#create"
end
namespace :v1, defaults: {format: 'json'} do
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
# Routes for posts
get 'posts(/index)', :to => 'posts#index'
post 'posts/create'
delete 'posts/:id', :to => 'posts#destroy'
get 'posts/show'
put 'posts/:id', :to => 'posts#update'
end
end
在我的贴子控制器中,我在操作之前设置了:验证用户代码>。我正在使用rails构建一个API,并通过从一个名为。我还尝试了从我的AngularJS应用程序(在不同于API的子域上)进行测试。为什么在我刚登录时,通过将正确的凭据发送到/sign\u in
会收到一个错误,告诉我登录。由于这只是一个API,是否有特殊考虑
编辑:
我的user.rb
文件:
module V1
class Users::SessionsController < Devise::SessionsController
# POST /sign_in
def new
user = User.find_by_email(params[:user][:email]) if params[:user]
if user && user.valid_password?(params[:user][:password])
sign_in(:user, user)
current_user.remember_me!
head 200
else
render status: 200, json: {errors: ["Incorrect email / username or password."]}.as_json
end
end
# ...
end
end
class User < ActiveRecord::Base
has_many :posts
has_many :comments
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :email, presence: true, uniqueness: true
validates :password, confirmation: true, presence: true
validates :password_confirmation, presence: true
end
Rails.application.routes.draw do
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
devise_scope :user do
post "sign_in", to: "v1/users/sessions#new"
delete "sign_out", to: "v1/users/sessions#destroy"
post "register", to: "v1/users/registrations#create"
end
namespace :v1, defaults: {format: 'json'} do
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
# Routes for posts
get 'posts(/index)', :to => 'posts#index'
post 'posts/create'
delete 'posts/:id', :to => 'posts#destroy'
get 'posts/show'
put 'posts/:id', :to => 'posts#update'
end
end
您在User.rb中为Desive提供了什么?有这样的吗?designe:database\u authenticable,:registerable,:memberable您是否尝试过放入布局并查看输出?同样,这只是一个猜测,但是您是否尝试过找到用户对象并执行Rememberme!就在用户对象上?我已经尝试了user。记住我代码>(在找到实际的用户对象之后),它也不起作用。都user.memory\u me代码>和当前用户。记住我代码>返回空值。我没有布局,所以我只是以JSON的形式返回结果。你能在这里尝试一下答案吗?我尝试过这种解决方案和类似的解决方案,但仍然没有成功。