仅对登录的用户限制在Rails应用程序中的访问

巴夫

我正在学习Rails,并且尝试限制如果用户尚未登录时对页面的访问,并且仅允许他们查看登录和注册页面。

当前,我的代码在用户登录时创建会话,并在用户注销时清除会话。我有一个Sessions助手,以便可以检查用户是否已登录,但是不确定如果用户未登录,如何在整个应用程序中重定向该用户。

更新:

  1. 当我发布问题时,我设法使用了before_filter。我应该使用before_action还是before_filter?

  2. 我是否需要在要限制访问权限的所有控制器中复制相同的方法?

代码:

/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionsHelper
end

/controllers/sessions_controller.rb

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      redirect_to user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    log_out
    redirect_to root_url
  end

end

/helpers/sessions_helper.rb

module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Returns the current logged-in user (if any).
  def current_user
    @current_user ||= User.find_by(id: session[:user_id])
  end

  # Returns true if the user is logged in, false otherwise.
  def logged_in?
    !current_user.nil?
  end

  # Logs out the current user.
  def log_out
    session.delete(:user_id)
    @current_user = nil
  end
end
斯坦米尔·埃米尔

您可以使用before_actionrails指南有一个不错的部分,并提供了一个示例:

class ApplicationController < ActionController::Base
  before_action :require_login

  private

  def require_login
    unless logged_in?
      flash[:error] = "You must be logged in to access this section"
      redirect_to new_login_url # halts request cycle
    end
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户限制了对计算机配置的访问时,C#.NET应用程序无法启动

来自分类Dev

限制用户表单访问 React 应用程序中的页面

来自分类Dev

在 minio 中根据用户限制存储桶访问

来自分类Dev

如何将对ContentProvider的访问限制为仅对我的应用程序?

来自分类Dev

登录时的用户限制页面

来自分类Dev

限制用户使用Cordova访问Android设备中的应用程序数据

来自分类Dev

如何限制仅某些用户访问我的应用程序中的特定功能?

来自分类Dev

Rails应用程序中的Cucumber Test似乎没有提交表单来登录用户

来自分类Dev

使用dev访问Rails应用程序中新指定的用户

来自分类Dev

限制应用程序本身中的phpmyadmin访问

来自分类Dev

用户登录信息存储到Blackberry中的应用程序

来自分类Dev

用户在Cloud Foundry Spring Boot应用程序中登录

来自分类Dev

限制rails应用程序中的check_box_tags

来自分类Dev

如何在Blazor应用程序中仅对经过身份验证的用户响应图像数据?

来自分类Dev

如何限制用户在登录我的Web应用程序时不打开任何外部网站?

来自分类Dev

限制 .NET MVC 应用程序上的登录用户数

来自分类Dev

限制应用程序访问设备

来自分类Dev

我需要限制用户访问我的Web应用程序

来自分类Dev

将 laravel 应用程序与 MS Active Directory 集成,但限制可以访问的用户

来自分类Dev

仅对下载了其他免费应用程序的用户免费提供付费的iOS应用程序

来自分类Dev

基于每个用户限制对存储文件的访问

来自分类Dev

基于每个用户限制对存储文件的访问

来自分类Dev

将 sftp 用户限制到主目录并允许访问

来自分类Dev

仅限管理员用户限制访问

来自分类Dev

如何在受用户限制的资源访问保护的python eve api中创建新的用户帐户

来自分类Dev

测试没有登录就无法访问Rails应用程序

来自分类Dev

如何仅对yammer中的特定应用程序禁用SSO?

来自分类Dev

需要一些想法在React Native应用程序中实现异步存储以保持用户登录应用程序

来自分类Dev

有什么方法可以在没有应用程序登录的情况下跟踪应用程序购买中的用户

Related 相关文章

  1. 1

    用户限制了对计算机配置的访问时,C#.NET应用程序无法启动

  2. 2

    限制用户表单访问 React 应用程序中的页面

  3. 3

    在 minio 中根据用户限制存储桶访问

  4. 4

    如何将对ContentProvider的访问限制为仅对我的应用程序?

  5. 5

    登录时的用户限制页面

  6. 6

    限制用户使用Cordova访问Android设备中的应用程序数据

  7. 7

    如何限制仅某些用户访问我的应用程序中的特定功能?

  8. 8

    Rails应用程序中的Cucumber Test似乎没有提交表单来登录用户

  9. 9

    使用dev访问Rails应用程序中新指定的用户

  10. 10

    限制应用程序本身中的phpmyadmin访问

  11. 11

    用户登录信息存储到Blackberry中的应用程序

  12. 12

    用户在Cloud Foundry Spring Boot应用程序中登录

  13. 13

    限制rails应用程序中的check_box_tags

  14. 14

    如何在Blazor应用程序中仅对经过身份验证的用户响应图像数据?

  15. 15

    如何限制用户在登录我的Web应用程序时不打开任何外部网站?

  16. 16

    限制 .NET MVC 应用程序上的登录用户数

  17. 17

    限制应用程序访问设备

  18. 18

    我需要限制用户访问我的Web应用程序

  19. 19

    将 laravel 应用程序与 MS Active Directory 集成,但限制可以访问的用户

  20. 20

    仅对下载了其他免费应用程序的用户免费提供付费的iOS应用程序

  21. 21

    基于每个用户限制对存储文件的访问

  22. 22

    基于每个用户限制对存储文件的访问

  23. 23

    将 sftp 用户限制到主目录并允许访问

  24. 24

    仅限管理员用户限制访问

  25. 25

    如何在受用户限制的资源访问保护的python eve api中创建新的用户帐户

  26. 26

    测试没有登录就无法访问Rails应用程序

  27. 27

    如何仅对yammer中的特定应用程序禁用SSO?

  28. 28

    需要一些想法在React Native应用程序中实现异步存储以保持用户登录应用程序

  29. 29

    有什么方法可以在没有应用程序登录的情况下跟踪应用程序购买中的用户

热门标签

归档