Tag: 监狱长

使用计算/操作的用户名参数设计登录

我正在尝试使用带有我已计算的用户名的设计创建登录。 作为一个例子,我们假设我们想要命名我们的用户名 – 我希望从登录表单接收用户名,并使用namespaced_username进行实际身份validation。 所以在我的User::SessionsController#create ,我可能有: def create params[:user][:namespaced_username] = “namespace/#{params[:user][:mobile_number]}” super end 尽管设计正在侦听namespaced_username(在初始化程序或模型本身中配置了authentication_keys),并且用户设置为namespace/username ,但我仍然会被告知Invalid Namespaced username or password is not valid 我如何获得设计(特别是看守策略)来阅读新的参数?

如何在使用Devise时构建经过身份validation的路由?

在我的问题中如何在用户未登录rails时拥有根视图? max回答我们可以使用authenticated来使路由仅在有人通过身份validation时可用。 我正在探讨如何构建这个: Rails.application.routes.draw do devise_for :users authenticated :user do # when authenticated allow all action on student resources :subjects do resources :students end end # when not only allow read on student resources :subjects do resources :students, only: [:get] end root “home#index” end 问题是我不想允许任何未经validation的操作:subjects如何阻止?

使用设计动态设置用户时区

我已经构建了一个rails应用程序,可以帮助父母跟踪他们的婴儿的睡眠。 为了使它正常工作,我必须支持不同的时区。 为了避免使用时区烦扰用户,我创建了一个小的javascript,在登录表单中添加了一个隐藏字段,包括时区偏移量。 这是代码 var timeZoneField = $(“input[name=’user_tz_offset’]”); if (timeZoneField.length) { var browserDate = new Date(); var timeZoneOffsetSeconds = (browserDate.getTimezoneOffset() * 60) * -1; $(timeZoneField).val(timeZoneOffsetSeconds); } 使用该字段中的数据,我将Time.zone设置为与该偏移量对应的任何城市。 这样的事情会产生时区 user_time_zone = ActiveSupport::TimeZone.[](params[:user_tz_offset].to_i) session[:user_time_zone] = user_time_zone 最后,我在ApplicationController中设置了时区。 def set_user_time_zone if (session[:user_id]) Time.zone = session[:user_time_zone] else Time.zone = config.time_zone end end 所有这些都依赖于我自己编写的登录function。 但是,我知道我以后需要使用更好的用户管理系统,因为我自己的代码既没有做得好或者特别安全(我首先关注其他function)。 现在,我已经安装了设计,它可以很好地登录和注销,该网站的大多数其他function也可以工作。 但我不知道如何使用设计作为我的用户管理系统来处理时区支持。 一个想法是覆盖Devise中的SessionsController,添加对该隐藏时区字段的检查并将其值添加到user_session。 但我对这样做感到担心,感觉这是一个坏主意。 是否有更好的方法来添加此function,而无需强制用户在注册期间添加时区信息? […]

设计在XHR上抛出HTTP auth并注销

我在使用OmniAuthvalidation我的Rails应用程序时遇到了很多问题。 我重新启动我的服务器并在隐身模式下打开一个新选项卡(以便清除cookie)并加载我的应用程序。 我登录,然后进入应用程序。 当我到达通过AJAX调用经过身份validation的操作的页面时,它会通过HTTP基本身份validation请求用户名和密码。 我在我的devise.rb中禁用了这个。 config.http_authenticatable = false config.http_authenticatable_on_xhr = false 当我返回上一页时,它会将我重定向到登录页面并要求登录。 当我访问不需要身份validation的页面然后返回经过身份validation的页面时,也会发生这种情况。 这令人非常沮丧。 我已经将Devise和Warden解压缩到我的vendor / gems目录中,以便我可以尝试调试它,但老实说我无法弄清楚从哪里开始。 任何帮助将非常感激。

Rails / Devise – 确定用户会话何时到期

当使用timeoutable于Devise的timeoutable模块时,如何确定当前用户会话到期之前的时间长度? 目标是在所有响应中包含此值,以便客户端脚本可以使用它。 我认为Devise在内部使用Warden进行身份validation,但我没有找到任何解释如何将会话到期时间拉出Warden深度的东西。

Rails 3 – 在sign_in之后设计重定向到forms

在博客应用中,我希望每个用户都可以访问表单来发表评论。 当用户提交评论表单时,如果未登录,则会将其重定向到Devise sign_in表单。 before_filter :authenticate_user!, :except => [:index, :show, :new] 我怎么能一旦用户sign_in,将他重定向到评论表并填写所有字段? 提前致谢

warden回调应该放在rails应用程序中的哪个位置?

我对铁路比较陌生。 我有Devise设置,并希望在用户登录后运行一些回调代码。 查看Warden wiki页面 ,我可以使用“after_set_user”回调来执行此逻辑,例如: Warden::Manager.after_set_user do |user, auth, opts| unless user.active? auth.logout throw(:warden, :message => “User not active”) end end 但是,我不确定我应该在哪里存储这些东西。 我的第一个想法是我可以把它放在config / initializers / devise.rb中。 那是对的吗? 在config目录中放置本质上是控制器代码的感觉并不正确。

Ruby on Rails登录后设计代码

我有一个使用Devise登录的RoR应用程序。 创建新用户记录时会执行一些代码,方法是将user.rb文件作为after_create调用/ macro / whatever放入。 我需要在每次登录后运行此代码,而不是在新用户创建时运行。 通过一些谷歌搜索,似乎有一个选项是在devise.rb代码中放置Warden回调。 我的问题是: 这是对的吗,和/或有更好的方法吗? 如果这是正确的方法…… Warden :: Manager …方法defs应该在Devise.setup中的devise.rb中,还是在它之后? after_authentication我应该使用回调吗? 我只是检查是否存在基于用户名的目录,如果不存在,则创建它。

设计 – 为多个用户单一登录表单

我有两个Devise模型,User和Business; 我希望两者都能够使用单一登录forms登录。 我正在使用骨干js,我有一个自定义的视图,所以视图不是一个问题。 ajax请求用于登录,它按预期适用于用户,但不适用于企业。 我搜索过谷歌,并提到了一些使用STI来解决这个问题的解决方案,但是项目已经完成了很多工作,我现在无法做出这样的改变。 我正在考虑重写Devise会话控制器和: 检查给定的电子邮件地址是否为用户,然后使用Warden对用户进行身份validation。 如果未找到具有该电子邮件的用户,则使用Warden对Business模型进行身份validation。 我无法弄清楚如何更改代码来实现上述目标,我不知道warden如何工作以及我需要调整哪些params来实现上述function,需要调用哪些函数。 任何人都可以指出我正确的方向或提供一个例子,说明我应该如何向前推进。 谢谢。

未捕获的投掷:设计测试中的监狱长

我刚刚开始测试Devise。 我无法理解为什么我会收到此错误:: Failure/Error: subject.current_user.should_not be_nil ArgumentError: uncaught throw :warden 这是我的规范中的代码:: require “spec_helper” describe Devise::PasswordsController do include Devise::TestHelpers before(:each) do user = Factory(:user) @request.env[“devise.mapping”] = Devise.mappings[:user] sign_in user end it “should have a current user” do subject.current_user.should_not be_nil end end 有没有人解决这个问题? 我知道github上存在问题,但在他们的情况下include Devise::TestHelpers不存在与我的情况不同。 我在这一行收到错误:: subject.current_user.should_not be_nil