设计自定义会话控制器奇怪的东西
Devise Custom Sessions Controller weird thing
我正在尝试自定义 SessionsController,我有一个用于我项目的 API 部分,另一个用于网络会话。
这是我的 routes.rb 文件
devise_for :users, :controllers => {:sessions => 'websessions'}
resource :dashboard
root :to => "dashboard#index"
namespace :api, defaults: {format: 'json'} do
devise_for :users, :controllers => {:sessions => "api/apisessions"}
end
似乎工作正常。
我的 websessions_controller 现在遇到问题了。我需要检查数据库标志(布尔值)以检查我的用户是否已激活(FlgEnbl)。这是我的代码
def create
resource = User.find_for_database_authentication(:email => params[:user][:email])
return failure unless resource
if resource.valid_password?(params[:user][:password])
logger.info 'Flag value' => resource.FlgEnbl
if resource.FlgEnbl == true
sign_in('user', resource)
redirect_to root_url
else
return failure
end
else
return failure
end
end
protected
def failure
warden.custom_failure!
return redirect_to new_user_session_path, alert: 'Invalid email/password, or account disabled !'
end
因此,如果我尝试使用有效用户和错误密码登录,失败消息会出现在我的登录页面上,有效用户和密码以及 bool 设置为 true 重定向到我的仪表板页面,但有效用户和密码将我的 bool 设置为 false 重定向到我的仪表板页面并显示一条消息 'You are already signed in.' 而不是显示错误消息。
在我的 api 控制器上使用渲染 json 的相同代码。
我是不是漏掉了什么或者这是个问题?
谢谢
所以,我找到了另一种解决方案,将其添加到我的模型中:
def active_for_authentication?
super && FlgEnbl?
end
def inactive_message
if !FlgEnbl?
:not_approved
else
super # Use whatever other message
end
end
只需在 i118n 设计文件的失败部分添加消息:not_approved。
希望对您有所帮助。
我正在尝试自定义 SessionsController,我有一个用于我项目的 API 部分,另一个用于网络会话。
这是我的 routes.rb 文件
devise_for :users, :controllers => {:sessions => 'websessions'}
resource :dashboard
root :to => "dashboard#index"
namespace :api, defaults: {format: 'json'} do
devise_for :users, :controllers => {:sessions => "api/apisessions"}
end
似乎工作正常。
我的 websessions_controller 现在遇到问题了。我需要检查数据库标志(布尔值)以检查我的用户是否已激活(FlgEnbl)。这是我的代码
def create
resource = User.find_for_database_authentication(:email => params[:user][:email])
return failure unless resource
if resource.valid_password?(params[:user][:password])
logger.info 'Flag value' => resource.FlgEnbl
if resource.FlgEnbl == true
sign_in('user', resource)
redirect_to root_url
else
return failure
end
else
return failure
end
end
protected
def failure
warden.custom_failure!
return redirect_to new_user_session_path, alert: 'Invalid email/password, or account disabled !'
end
因此,如果我尝试使用有效用户和错误密码登录,失败消息会出现在我的登录页面上,有效用户和密码以及 bool 设置为 true 重定向到我的仪表板页面,但有效用户和密码将我的 bool 设置为 false 重定向到我的仪表板页面并显示一条消息 'You are already signed in.' 而不是显示错误消息。
在我的 api 控制器上使用渲染 json 的相同代码。
我是不是漏掉了什么或者这是个问题?
谢谢
所以,我找到了另一种解决方案,将其添加到我的模型中:
def active_for_authentication?
super && FlgEnbl?
end
def inactive_message
if !FlgEnbl?
:not_approved
else
super # Use whatever other message
end
end
只需在 i118n 设计文件的失败部分添加消息:not_approved。
希望对您有所帮助。