ruby-on-rails 如何将RoR Cookie/会话限制在创建后1小时内

bt1cpqcv  于 2023-02-20  发布在  Ruby
关注(0)|答案(1)|浏览(199)

我有一个Ruby on Rails后端,目前使用cookie和会话来验证和登录用户。我相信会话的默认结束时间是用户关闭浏览器的时间,但我希望会话在创建后1小时结束。
以下是用于创建会话和验证用户的控制器:
会话_控制器.rb

class SessionsController < ApplicationController
    skip_before_action :authorize, only: [:create]
    include ::ActionController::Cookies
    
    def create
        user = User.find_by(email: params[:email])
        if user && user.authenticate(params[:password])
            session[:user_id] = user.id
            render json: user
        else
            render json: {errors: "check email and password"}, status: :unauthorized
        end
    end

    def destroy
        session.delete :user_id
        head :no_content
    end
end

用户_控制器.rb

class UsersController < ApplicationController

    skip_before_action :authorize, only: [:create]
    
    def show
        render json: @current_user
    end
end

应用程序_控制器.rb

class ApplicationController < ActionController::API
    include ActionController::Cookies

    before_action :authorize

    private

    def authorize
        @current_user ||= User.find_by(id: session[:user_id])
        render json: {errors: "Not authorized"}, status: :unauthorized unless @current_user
    end
end
g52tjvyc

g52tjvyc1#

您可以在初始化程序中设置过期时间,如下所示:

Rails.application.config.session_store :cookie_store, key: '_your_custom_session_key', expire_after: 1.hour.to_i

这将确保您的会话在1小时后过期。您可以尝试使用更短的时间段(如1.minute)进行验证。

相关问题