Здрасте, проблема такова, решил организовать аутентификацию с помощью authlogic, все делал по мануалу http://github.com/binarylogic/authlogic_example. Код | class UsersController < ApplicationController before_filter :require_no_user, :only => [:new, :create] before_filter :require_user, :only => [:show, :edit, :update]
def new @user = User.new end
def create @user = User.new(params[:user]) if @user.save flash[:notice] = "Account registered!" redirect_back_or_default account_url else render :action => :new end end
def show @user = @current_user end
def edit @user = @current_user end
def update @user = @current_user # makes our views "cleaner" and more consistent if @user.update_attributes(params[:user]) flash[:notice] = "Account updated!" redirect_to account_url else render :action => :edit end end end
|
Код | class UserSessionsController < ApplicationController before_filter :require_no_user, :only => [:new, :create] before_filter :require_user, :only => :destroy
def new @user_session = UserSession.new end
def create @user_session = UserSession.new(params[:user_session]) #@user_session = UserSession.new(:login => params[:login], :password => params[:password], :remember_me => params[:remember_me]); if @user_session.save flash[:notice] = "Login successful!" redirect_back_or_default account_url else render :action => :new end end
def destroy current_user_session.destroy flash[:notice] = "Logout successful!" redirect_back_or_default new_user_session_url end end
|
Код | class ApplicationController < ActionController::Base # protect_from_forgery helper :all helper_method :current_user_session, :current_user filter_parameter_logging :password, :password_confirmation
private def current_user_session return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find end
def current_user return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.record end
def require_user unless current_user store_location flash[:notice] = "You must be logged in to access this page" redirect_to new_user_session_url return false end end
def require_no_user if current_user store_location flash[:notice] = "You must be logged out to access this page" redirect_to account_url return false end end
def store_location session[:return_to] = request.request_uri end
def redirect_back_or_default(default) redirect_to(session[:return_to] || default) session[:return_to] = nil end end
|
Код | require 'digest/sha1' #require 'familynet_sha1_crypto_method' class User < ActiveRecord::Base # acts_as_authentic acts_as_authentic do |c| c.crypto_provider = Authlogic::CryptoProviders::Sha1 c.check_passwords_against_database = false c.validates_length_of_password_field_options = { :within => 6..20, :if => :password_required? } c.validates_length_of_password_confirmation_field_options = { :within => 6..20, :if => :password_required? } c.validates_length_of_login_field_options = { :within => 5..20 } c.validates_format_of_login_field_options = { :with => /^[\sA-Za-z0-9_-]+$/ } c.validates_length_of_email_field_options = { :within => 3..100 } c.validates_format_of_email_field_options = { :with => /^([^@\s]+)@((?:[-a-z0-9A-Z]+\.)+[a-zA-Z]{2,})$/ } end
protected def password_required? crypted_password.blank? || !password.blank? end end
|
соответсвенно база создана и есть таблица usesrs. Регистрация проходит на ура, открываю таблицу и вижу инфу логин, crypted_password, password_salt и т.д. Но вот при login говоит: 1 error prohibited this user session from being saved There were problems with the following fields: Password is not valid пароль точно valid, в чем может быть проблема? т.е. как я понял проверка пароля введенного в форме login с зашифрованным паролем в базе не проходит почемуто.
|