我正在使用带有rails 3.0.9,cucumber-rails 1.0.2,capybara 1.0.0的设计1.4.2.我有No route matches "/users/sign_out"错误,当我点击注销.:method => :delete经过这样的问题(no-route-matches-users-sign-out-devise-rails-3)后,我添加了link_to标签.
由于我用jquery替换了原型,我也不得不改变
config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
Run Code Online (Sandbox Code Playgroud)
至
config.action_view.javascript_expansions[:defaults] = %w(jquery jquery_ujs)
Run Code Online (Sandbox Code Playgroud)
绕过rails.js找不到错误.
虽然有了上述更改,但我能够成功注销并重定向到root,当我在FireBug中查看localhost:3000/users/sign_out请求的响应时,它会显示相同的路由错误消息单击此处以查看带有注释的屏幕截图
通过设计成功实现对rails 3 app的身份验证后,当我按照本教程(github.com/RailsApps/rails3-devise-rspec-cucumber/wiki/Tutorial)使用Cucumber + Capybara + RSpec添加功能和规格时,出现以下错误
When I sign in as "user@test.com/please" # features/step_definitions/user_steps.rb:41
Then I should be signed in # features/step_definitions/user_steps.rb:49
And I sign out # features/step_definitions/user_steps.rb:53
No route matches "/users/sign_out" (ActionController::RoutingError)
<internal:prelude>:10:in `synchronize'
./features/step_definitions/user_steps.rb:55:in `/^I sign out$/'
features/users/sign_out.feature:10:in `And I sign out'
And I should see "Signed …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails 3.0.9,Ruby 1.9.2,Devise 1.3.4并且需要在Devise会话中使用新视图来访问请求url参数,尽管我将此视为一般的Rails请求处理问题.实质上,向Devise认证资源发出请求,该资源将用户重定向到登录屏幕.在登录视图中,我需要访问请求URL,例如,这是在开头调用的请求URL
http://mysite.com/article/5?type=blah
Run Code Online (Sandbox Code Playgroud)
在重定向登录页面中,我需要访问该URL,任何人都知道我该怎么做?
我如何可以覆盖CURRENT_USER的色器件宝石. 实际上我需要为移动应用添加网络服务.
目前设计是管理会话和网络应用程序的'current_user'.
现在,移动应用程序会将user_id发送到服务器.我需要像这样覆盖当前用户
def current_user
if params[:user_id].blank?
current_user
else
User.find(params[:user_id])
end
end
Run Code Online (Sandbox Code Playgroud)
我是否需要修改devise gem作为插件?或者是其他东西 ?
请详细解释,因为我是rails的新手.
亲切的问候,
authentication rubygems devise ruby-on-rails-3 ruby-on-rails-3.1
在我的开发和测试环境中,我想用一堆用户为数据库播种.我正在使用Ruby on Rails v3.2.8和最新的Devise.所以我在db/seeds.rb文件中添加了这一行:
User.create(email: 'test@example.com', encrypted_password: '#$taawktljasktlw4aaglj')
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时rake db:setup,我收到以下错误:
耙子流产了!无法批量分配受保护的属性:encrypted_password
种子用户的正确方法是什么?
现在我有一个设计模型,它使用email作为authentication_key.
我想添加一个新的设计模型,它使用student_id作为authentication_key.
一些指南告诉我修改配置
"config.authentication_keys = [:email]"通过将:email替换为:student_id.
修改后,第一个模型登录总是失败,所以我想我必须分别为两个模型指出不同的authentication_keys.
我应该怎么做?
我已经使用Devise和Omniauth为我的rails应用程序设置了用户身份验证.现在我想知道我应该在哪里开始为我想要创建的Android和iPhone应用程序使用相同的auth.
我应该使用我的/ auth/facebook的移动版本,还是应该直接从应用程序发送请求?
这是一个相当普遍的问题,但我发现无处可寻.
编辑:我刚刚向应用程序添加了Token Auth以与RESTful api一起使用,我只是错过了Omniauth/Facebook-token部分.
在使用Devise登录后,是否可以将用户重定向到不同的页面(基于角色)?它似乎只重定向到routes.rb中定义的root:to => ...页面
谢谢!
我正在使用Devise和Ruby on Rails.
如果未经身份验证的用户尝试访问需要身份验证的页面,建议将其重定向到会话#new页面?
现在我得到一个错误,说明没有路由匹配他们尝试访问的路由(导致生产中出现404错误).
我有一个rails应用程序,我打算升级到rails 5.我正在使用devise(v4.2.0)和rails(v5.0.0).正如设计README.md文件中所建议的那样,我尝试将prevent_from_forgery移到before_filter之上但仍然在我尝试登录或更新我的错误时出现错误ActionController::InvalidAuthenticityToken
我的Application Controller是
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception, prepend: true
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:account_update, keys: [:name])
end
end
Run Code Online (Sandbox Code Playgroud)
我的另一个BugController是
class BugsController < ApplicationController
protect_from_forgery prepend: true, with: :exception
before_action :authenticate_user!
before_action :set_bug, only: [:show, :edit, :update]
def update
respond_to do |format|
if @bug.update(bug_params)
format.html { redirect_to @bug, notice: 'Bug was successfully updated.' }
format.json { render :show, status: :ok, location: @bug }
else
format.html { …Run Code Online (Sandbox Code Playgroud) 一切都很好,Omniauth突然停止了工作.我没有进行任何代码更改.
我检查了Twitter应用程序设置:我有回调网址到我的主要生产网址,并且回拨网址已锁定为否.所有密钥都是正确的.
任何的想法?
的OAuth ::未经授权
403禁止
ruby-on-rails devise omniauth ruby-on-rails-5 omniauth-twitter