我正在关注整合Omniauth Twitter + Devise http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/的这篇文章,我遇到了一个阻碍我的问题启动我的rails应用程序.
/Users/javier/Desktop/definitive/config/environment.rb:8:in `<top (required)>': undefined local variable or method `config' for main:Object (NameError)
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `require'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `block in require'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `require'
from /Users/javier/Desktop/definitive/config.ru:3:in `block in <main>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
from /Users/javier/Desktop/definitive/config.ru:in `new'
from /Users/javier/Desktop/definitive/config.ru:in `<main>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:50:in `app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:130:in `log_to_stdout'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:67:in `start'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in …
Run Code Online (Sandbox Code Playgroud) 尝试安装Devise,我收到以下消息"无法找到生成器设计:安装."
leigh@leigh-VirtualBox:~/Projects/dev01$ bundle install
Using rake 10.3.2
Using i18n 0.6.11
Using json 1.8.1
Using minitest 5.4.0
Using thread_safe 0.3.4
Using tzinfo 1.2.1
Using activesupport 4.1.4
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.4
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.4
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.1.4
Using activemodel 4.1.4
Using arel 5.0.1.20140414130214
Using activerecord 4.1.4
Using execjs 2.2.1
Using autoprefixer-rails 2.1.1.20140710
Using bcrypt 3.1.7
Using sass 3.2.19
Using …
Run Code Online (Sandbox Code Playgroud) 我即将对我的应用程序执行更新,我想要注销所有记住会话的用户.我的意思是,一旦我部署更新,我想强制所有用户再次登录.
最好的方法是什么?
我正在使用devise进行rails api身份验证,但无法正确理解devise正在为我们做什么.
我有会话控制器与创建方法签署用户.
def create
user_email = params[:session][:email]
user_password = params[:session][:password]
user = user_email.present? && User.find_by(email: user_email)
if user.valid_password?(user_password)
sign_in user, store: false /* exactly this line */
render json: user, status: 200, location: [:api, user]
else
render json: { errors: "Invalid email or password" }, status: 422
end
end
Run Code Online (Sandbox Code Playgroud)
在rubydoc上,它的描述是这样写的
登录已经过身份验证的用户.注册后,此助手可用于记录用户.给sign_in的所有选项都传递给warden中的set_user方法.
但我不清楚.谢谢.
我希望我的用户能够通过仅提供电子邮件地址来"订阅",而不必强迫他们使用密码注册,除非他们愿意.
我可以添加我自己的验证设置以允许这个但我怀疑如果我开始添加没有密码的用户或用我自己的"未注册"字段标记它们,它将干扰Devise其余部分的工作方式.
目前最简单的解决方案似乎是将这些用户放在一个不同的表中,但它有一点点气味.有任何想法吗?
所以我正在制作一个rails应用程序,它也利用node.js来实现实时功能.在节点应用程序上对用户进行身份验证的最佳方法是什么?我一直在考虑在数据库中保存会话ID,然后用它进行验证,或者在页面中显示用户ID,然后在连接时将其发送到节点应用程序.或者也许其他东西完全是最好的.我正在使用猫鼬为我的节点orm和mongoid用于红宝石.
我正在使用Devise/OmniAuth和Koala构建一个Rails 3应用程序,我收到以下SSL错误:
OpenSSL::SSL::SSLError in Users/omniauth callbacksController#facebook
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)
导致此错误的代码是:
@graph = Koala::Facebook::GraphAPI.new(@token)
@friends = @graph.get_connections("me", "friends")
Run Code Online (Sandbox Code Playgroud)
我正在使用Devise与OmniAuth进行身份验证,这是有效的.然后,我将获取返回的facebook令牌,并尝试将其与Koala一起使用,如上所示.这就是造成这个错误的原因.
值得注意的是,我最初收到了与Devise&OmniAuth相同的错误.有一些关于此错误的主题,我可以通过设置我的config/initialisers/devise.rb来解决它,
config.omniauth :facebook, APPID, APPKEY, {:client_options => {:ssl => {:ca_file => "/opt/local/share/curl/curl-ca-bundle.crt"}}}
Run Code Online (Sandbox Code Playgroud)
我猜我需要为Koala提供类似的配置,以便它知道在哪里检索本地ca_file.我在文档中找不到任何关于如何这样做的说明.有关如何执行此操作的任何想法,或一般如何避免错误?
我的开发环境是OSX.
我正在使用devise/omniauth来进行facebook身份验证并且效果很好.但是,我想添加一个流程,其中现有(非Facebook)用户有能力将他的帐户与Facebook连接.这将需要不同的Facebook权限.所以我似乎找不到两件事
有任何想法吗?谢谢
我构建了一个应用程序,允许用户使用omniauth-ldap对Active Directory进行身份验证.如果这是新用户,则成功的身份验证将根据从AD返回的信息为其创建用户.如果用户已存在,则只会将其登录.用户不会注册该应用程序,只需使用AD凭据登录即可.我从不希望用户使用数据库凭据登录.
我无法弄清楚如何摆脱或改变一些路线.例如,如果用户访问/ sign_in,他们将获得数据库身份验证.如果用户访问sign_up,他们将被带到页面注册该站点.我希望访问/ sign_in的用户进入LDAP登录,即/ users/auth/ldap.我想我需要制作一个自定义路线,但我不确定我需要哪个控制器来引导用户.我想让sign_up页面完全消失.
现在我有一个允许用户使用ldap登录的链接,其路径是user_omniauth_authorize_path(:ldap).我只是不确定如何将其转换为我的config/routes.rb文件理解的内容.这就是我现在在路线上所拥有的.
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
Run Code Online (Sandbox Code Playgroud)
当我运行rake路由时,我没有看到user_omniauth_authorize_path的任何路由,我认为是因为该路由是由设计生成的.所以我认为我需要让我的路线指向一个设计控制器,但我似乎无法找到正确的路径.
我正在Rails 3.2应用程序上实现Devise,并希望系统记住用户.
/app/models/user.rb:
class User < ActiveRecord::Base
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
end
Run Code Online (Sandbox Code Playgroud)
/db/schema.rb:
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
t.string "password"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "encrypted_password", :default => "", :null => false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
end
Run Code Online (Sandbox Code Playgroud)
我想以最标准/默认的方式做到这一点,并且考虑到文档的不足,我猜它对某些人来说"只是起作用"而根本不适合我.例如,我使用Devise生成器为User构建迁移,并且没有覆盖任何控制器.我收到一个复选框,但是当我检查它时,用户的信息不会被记住.
我错过了什么?我的架构中是否缺少生成器应该创建的东西?