ruby-on-rails - 使用设计有效地在 Rails 中保存用户会话
问题描述
我正在尝试学习 Rails,并使用设计创建了用户模型,但只是使用 Rails 一个 API。我在控制器上添加了自定义验证,它工作正常。用户可以在从前端发布数据时登录。但是,问题在于浏览器不会将会话存储在任何地方。因此,每次重新加载页面时,会话都将被视为新会话。我想知道 devise 是否具有内置功能,可以创建会话并存储在 cookie 或本地存储中。
class API::V1::SessionsController < Devise::SessionsController
def create
@user = User.find_by_email(user_params[:email])
if @user && @user.valid_password?(user_params[:password])
sign_in :user, @user
render json: @user
elsif @user && not(@user.valid_password?(user_params[:password]))
invalid_attempt
else
no_user
end
end
def destroy
@message = "signed out"
sign_out(@user)
render json: @message
end
private
def no_user
render json: {error: "An account with this email doesn't exist. Please create a new one"}, status: :unprocessable_entity
end
def invalid_attempt
render json: { error: "Your password isn't correct" }, status: :unprocessable_entity
end
def user_params
params.require(:user).permit(:email, :password)
end
end
解决方案
推荐阅读
- c# - 将 SVG 转换为 PNG 的 NGraphics 无法正确缩放图像
- swiftui - 如何使 ScrollView 可刷新 swiftui?
- laravel - 在 Laravel 8 中将资源与分页组合时缺少元和链接键
- go - 如何覆盖 testcontainer 使用的图像注册表 url
- google-chrome - WebGL 有没有办法为使用哪个 ANGLE 后端提供提示?
- dataframe - 使用 keras tensorflow 进行非顺序回归时的数据框形状
- api - 带有 expo 和 hapi.js 的移动项目
- python-3.x - 在 Python 中读取 Web 表单的名称/值对
- typescript - 'require' 未定义 - 带有打字稿的 Sveltekit
- python - 在 Flask-Admin 编辑表单中使用 QuerySelectMultipleField 的问题