2
ldap로 인증 한 후 사용자 세션을 관리하려고합니다. 인증 부분은 잘 작동하지만 세션 ID를 생성 할 수 없습니다. "정의되지 않은 메서드`id 'for true : TrueClass"오류가 발생합니다.루비 레일 - 세션 관리
모델 -
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
컨트롤러 -
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
보기 -
<%= 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 %>
오류 -
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"}
감사합니다. John. 그것으로 문제가 해결되었습니다. 내 다른 질문은 - 레일즈에서, 동일한 사용자 아이디의 다중 로그인의 경우 각 세션이 독립적으로 유지됩니까? –
예, 각 세션은 독립적입니다. –
고마워요. 마지막으로, 세션에 추가 된 속성을 어떻게 저장할 수 있습니까? 이메일 주소 나 성을 좋아하십시오. –