Ruby on rails RubyonRails-在应用程序中添加第二个(非常)简单的身份验证层

Ruby on rails RubyonRails-在应用程序中添加第二个(非常)简单的身份验证层,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,一旦用户登录到他们的帐户,他们就会看到“员工”列表 现在,当您单击某个员工时,它会将用户带到该特定员工的“显示”页面,但是我想在该列表中添加一个“pin保护”方面,然后再呈现显示页面 我想添加一个简单的身份验证层,如下所示: 当用户在列表上单击其姓名时,会出现一个文本字段,询问所选员工的pin 用户输入pin。提交时,它会将输入的pin与该员工记录的“pin”列进行比较。如果正确,则授予对所选员工显示页面的访问权 这是在RoR中很容易做到的事情吗?这是我开发的第一个真正的应用程序,所以我很难将我

一旦用户登录到他们的帐户,他们就会看到“员工”列表

现在,当您单击某个员工时,它会将用户带到该特定员工的“显示”页面,但是我想在该列表中添加一个“pin保护”方面,然后再呈现显示页面

我想添加一个简单的身份验证层,如下所示:

  • 当用户在列表上单击其姓名时,会出现一个文本字段,询问所选员工的pin

  • 用户输入pin。提交时,它会将输入的pin与该员工记录的“pin”列进行比较。如果正确,则授予对所选员工显示页面的访问权

  • 这是在RoR中很容易做到的事情吗?这是我开发的第一个真正的应用程序,所以我很难将我的思维集中在像这样的几个概念上

    非常感谢

    看看,这绝对是RubyonRails 3认证层的最佳选择


    如果您只想向现有模型类添加一点功能,最好是添加一个方法,如下所示:

    def validate_pin(pin_to_check)
        self.pin == pin_to_check
    end
    
    然后,您只需修改员工控制器,以便
    show
    方法检查pin是否已提供(理想情况下通过会话变量),否则,使用其他方法重定向并请求pin,并在要求用户输入pin的控制器中路由
    employee\request\u pin
    ,成功后,重定向到
    员工#显示
    路线

    控制器中的会话处理

    要编写会话变量,您需要一个
    Employee#check_pin
    方法(作为POST路由),您只需使用以下代码:

    session[:pin_valid] = true
    

    然后您可以在您的
    Employee\show
    方法中检查
    会话[:pin_valid]
    ,谢谢您的推荐!我已经设置好了我的整个用户身份验证模型并开始工作了——我只是想添加下一个简单的层,即在允许访问他们的查看页面之前检查员工PIN。。。Desive也允许这种类型的事情吗?我也这么认为,但对于这样一个琐碎的任务来说,这将是一个有点大的工作。是的!这看起来很棒。我唯一的另一个问题是如何将用户pin的表单输入写入会话变量。非常感谢您的帮助,非常好。很抱歉我一直在问问题,但是有没有办法将数据直接从表单发布到会话?我搜索了几个小时,似乎什么也找不到。你最好再问一个问题。pin当前是否存在于你的模型中?是的,在创建员工时,pin会记录在每个员工的记录中。