标签: devise

如何使用Devise和Rails 3简单地验证用户名和密码是否正确

我正在使用DeviseRails 3.

我想调用一个函数,只需验证用户username和密码组合是否正确,而无需实际登录该用户.有没有办法用Devise来完成这样的事情:

User.authenticate(params[:username], params[:password])
Run Code Online (Sandbox Code Playgroud)

devise ruby-on-rails-3

33
推荐指数
1
解决办法
1万
查看次数

Rails设计:after_confirmation

有没有办法创造一个after_confirmation :do_something

目标是在用户确认使用Devise后发送电子邮件:confirmable.

rubygems ruby-on-rails devise ruby-on-rails-3

33
推荐指数
4
解决办法
1万
查看次数

如何创建第一个(Admin)用户(CanCan和Devise)?

我在我的Rails 3应用程序中使用Tony的教程进行了身份验证

我不希望在我的应用上进行公开注册,只是为了使用管理员帐户创建新用户,但我无法手动创建管理员帐户,因为在表中用户必须生成加密密码和盐,我不知道我知道如何:|

devise cancan ruby-on-rails-3

33
推荐指数
3
解决办法
3万
查看次数

设计不验证密码/密码确认

我有一个处理基于断码的用户密码的编辑定制控制器在这里.

用户模型

attr_accessible :password, :password_confirmation, :username, :login
...
devise :database_authenticatable, 
       :lockable, 
       :registerable, 
       :recoverable, 
       :rememberable, 
       :trackable
Run Code Online (Sandbox Code Playgroud)

PasswordsController

expose(:user) { current_user }

def update
  if user.update_with_password(params[:user])
    sign_in(user, :bypass => true)
    flash[:notice] = "success"
  else
    render :edit
  end
end
Run Code Online (Sandbox Code Playgroud)

我的编辑密码表单位于此处.

问题在于,无论我输入(或不输入该内容)到编辑密码表单中,都会显示"成功"闪存方法.

ruby-on-rails devise ruby-on-rails-3

33
推荐指数
2
解决办法
2万
查看次数

rails:3 Devise注册过滤器链停止为:require_no_authentication呈现或重定向

我在我的网站中使用Devise我创建了管理员命名空间,并通过管理员提供了创建用户的功能.
我的路线如下

devise_for :users,:has_many => :comments, :controllers => {:sessions =>'devise/sessions',:registrations => 'devise/registrations'} do    
  get "/login", :to => "devise/sessions#new", :as => :login  

  get "/signup", :to => "devise/registrations#new", :as => :signup     

  get "/logout", :to => "devise/sessions#destroy", :as => :logout
end
Run Code Online (Sandbox Code Playgroud)

当我点击signup_path导致以下错误的add_user链接时:

我的错误

 Started GET "/signup" for 127.0.0.1 at Fri Mar 09 12:49:11 +0530 2012    
 Processing by Devise::RegistrationsController#new as HTML    
 User Load (0.1ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 35 LIMIT 1    
 Redirected to http://localhost:3000/admin     
 Filter chain halted as :require_no_authentication …
Run Code Online (Sandbox Code Playgroud)

redirect render devise ruby-on-rails-3

33
推荐指数
4
解决办法
4万
查看次数

在允许用户使用devise(rails)登录之前检查用户是否处于活动状态

我正在使用设计并创建了一个名为:active的用户字段,该字段为true或false.在允许用户登录之前,我必须手动使用户处于活动状态(true).至少这是意图.我试过这个......

class SessionsController < Devise::SessionsController
  # POST /resource/sign_in
  def create
    "resource/signin CREATE"
    self.resource = warden.authenticate!(auth_options)
    unless resource.active?
      sign_out
      redirect_to :sorry_not_active_url
      return
    end
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    respond_with resource, :location => after_sign_in_path_for(resource)
  end  
end
Run Code Online (Sandbox Code Playgroud)

但是,这并没有捕获用户可以登录的所有位置,例如,当用户更改其密码时,该站点会自动将其自动登录.但是,如果用户不活动,我不希望他们被允许登录,而是被重定向到sorry_not_active_url.

如果用户不活动,阻止用户登录的最佳方法是什么?

谢谢.

ruby ruby-on-rails devise

33
推荐指数
2
解决办法
1万
查看次数

如何配置设计以使用自定义电子邮件布局?

当我说布局时我并不仅仅意味着视图,我生成那些.在我自己的邮件上,我正在使用默认布局.我在SomeMailer.rb文件中定义

#some_mailer.rb
class SomeMailer < ActionMailer::Base
  layout 'sometemplate'
Run Code Online (Sandbox Code Playgroud)

我是否可以通过某种方式为Devise Mailer等人做到这一点?

ruby-on-rails mailer devise ruby-on-rails-3

32
推荐指数
3
解决办法
1万
查看次数

为什么我会收到bcrypt-ruby gem install错误?

尝试安装gem设备时出错,安装停止在gem bcrypt-ruby上:

$ gem install bcrypt-ruby
Error installing bcrypt-ruby:
ERROR: Failed to build gem native extension.
Run Code Online (Sandbox Code Playgroud)

我在RVM下使用Ruby运行OSX 10.6.7.我重新安装了最新版本的xcode并重新安装了Ruby 64bit,Rails和所有宝石.

ruby rubygems ruby-on-rails bcrypt devise

32
推荐指数
4
解决办法
2万
查看次数

设计:手动加密密码并直接存储

我正在尝试从旧数据库迁移大量用户.为此,我使用activerecord-import并尝试将所有用户数据直接保存到DB(绕过用户模型).

我的问题:我需要使用旧用户的纯文本密码,加密它,并直接存储到数据库.我知道如何使用Devise 生成密码,但我想知道是否有办法获得可以直接存储到数据库的哈希密码.

希望这样做:

new_hashed_password = Devise.awesome_encrypting_method(old_user.password)
Run Code Online (Sandbox Code Playgroud)

然后将"new_hashed_pa​​ssword"直接存储到数据库中,而无需通过模型.我在Devise挖了一遍,发现了这个:

def password_digest(password)
  ::BCrypt::Password.create("#{password}#{self.class.pepper}", :cost => self.class.stretches).to_s
end
Run Code Online (Sandbox Code Playgroud)

@@ stretches默认为10(lib/devise.rb:71),并且不会被初始化程序覆盖

@@ pepper默认为nil(lib/devise.rb:148),并且不被我的初始化程序覆盖

我以为我可以手动重新创建password_digest(),但我认为我缺少一些关于Bcrypt的基本信息,因为即使设置了密码和延伸,每次产生的哈希都是不同的.

有任何想法吗?谢谢你的帮助!

ruby-on-rails devise

32
推荐指数
3
解决办法
3万
查看次数

Rails before_filter用于控制器中的特定操作

  def new
    before_filter  do 
      redirect_to "/" unless current_admin || current_company
      flash[:notice] = 'You dont have enough permissions to be here' unless current_admin || current_company

     end
    CODE CODE CODE
   end

  def edit
    before_filter  do 
      redirect_to "/" unless current_admin.id = 5
      flash[:notice] = 'You dont have enough permissions to be here' unless current_admin || current_company

     end
    CODE CODE CODE
   end
Run Code Online (Sandbox Code Playgroud)

这是我想要做的代码,但我无法弄清楚如何正确地做到这一点.我想要实现的是为我的每个动作应用before_filter规则.因此,或许用户可以存取权限去INDEX行动,但不会在修改动作等我知道的before_filter方法运行一个单一的时间,我不能跑4个before_filters,我只是给的,因为我的英语不好一些参考.

您必须知道我正在使用Devise作为current_admin和current_company方法.我需要应用不同的过滤器(如果是admin或者如果是company.id = X)和其他操作.

在此先感谢,我非常喜欢这里.任何帮助将不胜感激.

ruby ruby-on-rails before-filter devise ruby-on-rails-3.1

32
推荐指数
1
解决办法
3万
查看次数