J'essaie de gérer la session des utilisateurs après l'authentification avec ldap. La partie d'authentification fonctionne très bien, mais ne semble pas pouvoir générer l'identifiant de session. J'obtiens "une méthode non définie` id 'pour true: TrueClass "erreur.Ruby rails - gestion de session
Modèle -
def self.Authenticate(login, pass)
user = find_by_user_id(login)
if user
user
else
return false
end
conn = Net::LDAP.new(
:host => SERVER,
:port => PORT,
:base => BASE,
:auth => {
:username => "#{login}@#{DOMAIN}",
:password => pass,
:method => :simple
}
)
if conn.bind
return true
else
return false
end
rescue Net::LDAP::LdapError => e
return false
end
Controller -
def create
user = User.Authenticate(params[:user_id], params[:password])
if user
session[:user_id] = user.id
redirect_to theapp_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end
Voir -
<%= form_tag sessions_path do %>
<p>
<%= label_tag :Username %><br />
<%= text_field_tag :user_id, params[:user_id] %>
</p>
<p>
<%= label_tag :Password %><br />
<%= password_field_tag :password %>
</p>
<p class="button"><%= submit_tag "Log in" %></p>
<% end %>
L'erreur -
NoMethodError in SessionsController#create
undefined method `id' for true:TrueClass
Rails.root: /myapp
Application Trace | Framework Trace | Full Trace
app/controllers/sessions_controller.rb:12:in `create'
Request
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"OmzCrLHR1t/xfIXNcEzy2NCGfVpEKSyI4OZfqpPEFNw=",
"user_id"=>"admin",
"password"=>"[FILTERED]",
"commit"=>"Log in"}
Merci beaucoup John. Cela a résolu le problème. Mon autre question est - dans les rails, chaque session reste-t-elle indépendante en cas de connexions multiples du même identifiant d'utilisateur? –
oui, chaque session est indépendante. –
Merci ... et enfin - Comment puis-je stocker des attributs supplémentaires attachés à la session? Comme l'adresse e-mail ou le nom complet. –