Login

Ciao a tutti, ho un problema con login. Seguendo l’esempio del libro
“Sviluppare applicazioni con ROR” ho creato un logincontroller,l’azione
di login viene eseguita (il confronto con la tabella USER del DB viene
fatto bene) solo che invece di darmi il redirect a una pagina di INDEX
mi redirecta di nuovo al login…credo sia un problema relativo al
numero della session (nel file di log ogni operazione porta un diverso
numero di session), ma non so davvero come agire…qualcuno può darmi
una mano (?) Grazie, Giovanno.

Ti mando un esempio funzionante di controller e index.rhtml di una mia
applicazione:

class LoginController < ApplicationController
layout “admin”

before_filter :authorize, :except => :login

def index
@total_requirements = Requirement.count
@pending_requirements = Requirement.count_pending
@charged_requirements = Requirement.count_charged
@discharged_requirements = Requirement.count_discharged
@today_requirements = Requirement.count_today
flash[:notice] = “Status richieste”
end

def add_user
if request.get?
@user = User.new
flash[:notice] = ‘Aggiungi amministratore.’
else
@user = User.new(params[:user])
if @user.save
redirect_to_index(“User #{@user.name} created”)
end
end
end

def login
if request.get?
session[:user_id] = nil
@user = User.new
else
@user = User.new(params[:user])
logged_in_user = @user.try_to_login

  if logged_in_user
    session[:user_id] = logged_in_user.id
    redirect_to(:action => "index")
  else
    flash[:notice] = "Combinazione user/password non valida"
  end
end

end
end

questo e’ index.rhtml in view\login

<%= link_to 'Tutte le richieste pervenute', :controller => 'admin',:action => 'list' %> <%= @total_requirements %>

<%= link_to 'Richieste soddisfatte:', :controller => 'admin',:action => 'list_discharged' %> <%= @discharged_requirements %>

<%= link_to 'Richieste in esame:', :controller => 'admin',:action => 'list_charged' %> <%= @charged_requirements %>

<%= link_to 'Richieste pendenti:', :controller => 'admin',:action => 'list_pending' %> <%= @pending_requirements %>

<%= link_to 'Richieste pervenute oggi:', :controller => 'admin',:action => 'list_today' %> <%= @today_requirements %>

B.M.

Grazie Biagio,vedo solo ora la tua risposta.Anche io ho preso il
login_controller dal libro “Agile Developement etc…” però se io vado
su http://localhost:3000/login/login e inserisco un username e password
validi (registrati su database) vengo reistradato alla pagina di login
stessa. Credo che questo dipenda dalla authorize definita
nell’application.rb. Inoltre io non ho un controller admin, ma i tre
controller delle mie tre classi. Vorrei che una volta loggato venissi
reistradato su contact\cerca ad esempio. Dal file di log noto che ogni
azione è registrata con un numero di sessione differente. Credo che sia
questo che impedisce a rails di riconoscere che la sessione appartiene
ad un utente correttamente loggato. Se puoi aiutarmi te ne sarei grato.
Ciao,Giovanni.

Biagio M. wrote:

Ti mando un esempio funzionante di controller e index.rhtml di una mia
applicazione:

class LoginController < ApplicationController
layout “admin”

before_filter :authorize, :except => :login

def index
@total_requirements = Requirement.count
@pending_requirements = Requirement.count_pending
@charged_requirements = Requirement.count_charged
@discharged_requirements = Requirement.count_discharged
@today_requirements = Requirement.count_today
flash[:notice] = “Status richieste”
end

def add_user
if request.get?
@user = User.new
flash[:notice] = ‘Aggiungi amministratore.’
else
@user = User.new(params[:user])
if @user.save
redirect_to_index(“User #{@user.name} created”)
end
end
end

def login
if request.get?
session[:user_id] = nil
@user = User.new
else
@user = User.new(params[:user])
logged_in_user = @user.try_to_login

  if logged_in_user
    session[:user_id] = logged_in_user.id
    redirect_to(:action => "index")
  else
    flash[:notice] = "Combinazione user/password non valida"
  end
end

end
end

questo e’ index.rhtml in view\login

<%= link_to 'Tutte le richieste pervenute', :controller => 'admin',:action => 'list' %> <%= @total_requirements %>

<%= link_to 'Richieste soddisfatte:', :controller => 'admin',:action => 'list_discharged' %> <%= @discharged_requirements %>

<%= link_to 'Richieste in esame:', :controller => 'admin',:action => 'list_charged' %> <%= @charged_requirements %>

<%= link_to 'Richieste pendenti:', :controller => 'admin',:action => 'list_pending' %> <%= @pending_requirements %>

<%= link_to 'Richieste pervenute oggi:', :controller => 'admin',:action => 'list_today' %> <%= @today_requirements %>

B.M.