将Devise身份验证助手与Rails中的`OR`语句相结合

理查德

我目前正在使用Devise gem处理用户身份验证。

有一些帮助程序方法,它们基本上可以使您在用户访问控制器中的特定路由/视图之前对其进行身份验证。

即,如果您需要user_type_ones登录以访问/home

class FooController < ApplicationController
   before_action :authenticate_user_type_one!

   def home
     #stuff
   end
end

如何使它成为指定类型的用户可以访问该页面。

因此,如果我有user_type_oneuser_type_two三种类型的用户,user_type_three而我只希望user_type_ones和user_type_twos进行访问/home,则我想做这样的事情。

before_action :authenticate_user_type_one! || :authenticate_user_type_two!

狩猎者

Devise为您处理了许多默认值,并做了出色的工作,但是当您需要开始自定义行为时,它可能会变得很刺耳。特别是如果您刚接触Rails,通常我认为最好编写自己的自定义方法来手动检查您需要检查的内容。然后,随着对Devise的熟悉,您可以慢慢了解它可能具有的内置工具或您可以侵入的内部挂钩,以更优雅地获得所需的行为。

具体来说,作为起点,我尝试编写一个自定义的before_action:

class FooController < ApplicationController
  before_action :authenticate_apple_or_orange_or_pear!

  def home
    stuff
  end

  protected

  def authenticate_apple_or_orange_or_pear!
    unless apple_signed_in? or orange_signed_in? or pear_signed_in?
      redirect_to go_away_and_never_return_path, alert: "You're not wanted here."
    end
  end

end

如果我正确理解了您的需求,这应该可以满足您的要求。它检查是否登录了任何必需的帐户类型,如果没有,则将访问者重定向到其他路径,从而阻止对该控制器的访问。

如果跨多个控制器需要使用此方法,则也可以将该方法定义移入该方法定义,application_controller.rb并且该方法定义将对所有继承自该方法的控制器ApplicationController(通常意味着所有这些方法)可用

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Devise 在 Rails 中划分经过身份验证和未经身份验证的布局

来自分类Dev

将同一身份验证REST Api的基本身份验证和表单登录相结合

来自分类Dev

Rails Devise将经过身份验证的用户重定向到特定路径

来自分类Dev

使用Devise和MongoMapper进行Rails 4身份验证

来自分类Dev

使用Devise从Rails上的json api进行身份验证

来自分类Dev

Rails Girls Guides使用Devise添加身份验证的问题

来自分类Dev

RailsAdmin + Devise ...身份验证

来自分类Dev

将Windows身份验证与OAuth 2.0结合使用

来自分类Dev

将自定义应用程序身份验证与JAVA EE安全性相结合。可能的?

来自分类Dev

将自定义应用程序身份验证与JAVA EE安全性相结合。可能的?

来自分类Dev

Rails中的基本用户身份验证

来自分类Dev

Rails API中的用户身份验证

来自分类Dev

Rails 中的基本身份验证

来自分类Dev

在Rails的同一控制器中对两个不同的devise类进行身份验证

来自分类Dev

将数据修改CTE中的INSERT语句与CASE表达式相结合

来自分类Dev

Grape and Devise的用户身份验证

来自分类Dev

带Devise身份验证的Apipie

来自分类Dev

身份验证失败:Devise + OmniAuth + Facebook

来自分类Dev

将Oracle身份联合身份验证与Active Directory结合使用

来自分类Dev

Azure Api 规则不适用于使用带有基本身份验证和身份验证证书的默认助手

来自分类Dev

如何将否定与if语句中的声明相结合?

来自分类Dev

如何将否定与if语句中的声明相结合?

来自分类Dev

Rails中的Authorize.net-由于无效的身份验证值,用户身份验证失败

来自分类Dev

如何使用Postman身份验证助手调用JHipster(春季)OAuth2 Rest服务器

来自分类Dev

具有Devise的Two Rails应用-同步身份验证(Helpy.io)

来自分类Dev

Rails登录并使用devise从两个数据库表进行身份验证

来自分类Dev

这个Rails JSON身份验证API(使用Devise)是否安全?

来自分类Dev

使用devise,Rails使用Jordan.js进行身份验证

来自分类Dev

Rails4 + Devise:用户未通过身份验证时“隐藏”路由

Related 相关文章

  1. 1

    使用 Devise 在 Rails 中划分经过身份验证和未经身份验证的布局

  2. 2

    将同一身份验证REST Api的基本身份验证和表单登录相结合

  3. 3

    Rails Devise将经过身份验证的用户重定向到特定路径

  4. 4

    使用Devise和MongoMapper进行Rails 4身份验证

  5. 5

    使用Devise从Rails上的json api进行身份验证

  6. 6

    Rails Girls Guides使用Devise添加身份验证的问题

  7. 7

    RailsAdmin + Devise ...身份验证

  8. 8

    将Windows身份验证与OAuth 2.0结合使用

  9. 9

    将自定义应用程序身份验证与JAVA EE安全性相结合。可能的?

  10. 10

    将自定义应用程序身份验证与JAVA EE安全性相结合。可能的?

  11. 11

    Rails中的基本用户身份验证

  12. 12

    Rails API中的用户身份验证

  13. 13

    Rails 中的基本身份验证

  14. 14

    在Rails的同一控制器中对两个不同的devise类进行身份验证

  15. 15

    将数据修改CTE中的INSERT语句与CASE表达式相结合

  16. 16

    Grape and Devise的用户身份验证

  17. 17

    带Devise身份验证的Apipie

  18. 18

    身份验证失败:Devise + OmniAuth + Facebook

  19. 19

    将Oracle身份联合身份验证与Active Directory结合使用

  20. 20

    Azure Api 规则不适用于使用带有基本身份验证和身份验证证书的默认助手

  21. 21

    如何将否定与if语句中的声明相结合?

  22. 22

    如何将否定与if语句中的声明相结合?

  23. 23

    Rails中的Authorize.net-由于无效的身份验证值,用户身份验证失败

  24. 24

    如何使用Postman身份验证助手调用JHipster(春季)OAuth2 Rest服务器

  25. 25

    具有Devise的Two Rails应用-同步身份验证(Helpy.io)

  26. 26

    Rails登录并使用devise从两个数据库表进行身份验证

  27. 27

    这个Rails JSON身份验证API(使用Devise)是否安全?

  28. 28

    使用devise,Rails使用Jordan.js进行身份验证

  29. 29

    Rails4 + Devise:用户未通过身份验证时“隐藏”路由

热门标签

归档