tôi cần phải ghi đè lập mưu phiên điều khiển trong quá trình đăng nhập (Rails 3.0.9, Ruby 1.9.2, 1.3.4 Vạch), tôi đã cố gắng này mà không có bất kỳ tác dụngRails 3 override Vạch phiên điều khiển
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
end
Ý tưởng?
EDIT Như được chỉ ra trong câu trả lời, tôi cũng cần phải thay đổi tuyến đường. Ngoài ra, tôi cũng cần phải sao chép các khung nhìn. Tốt hơn hết là giải thích ở đây http://presentations.royvandewater.com/authentication-with-devise.html#8
chiến lược tùy chỉnh của tôi:
devise.rb
config.warden do |manager|
manager.strategies.add(:custom_strategy) do
def authenticate!
... authenticate against 3rd party API...
if res.body =~ /success/
u = User.find_or_initialize_by_email(params[:user][:email])
if u.new_record?
u.save
end
success!(u)
end
end
end
Vâng tôi cũng đã tìm ra điều đó và tôi cũng cần phải sao chép chế độ xem. Tôi có giữ nguyên lộ trình 'devise_for: users' ban đầu ngoài thay đổi trên không? Tôi không muốn ghi đè các hành động khác. –
Có một vấn đề khác với điều này, nó cũng không thực thi chiến lược xác thực cơ sở dữ liệu mặc định ngoài chiến lược tùy chỉnh mà tôi thêm vào, không chắc chắn cách sửa lỗi này. –
Chỉ nên có 1 'devise_for' và sau khi bạn sao chép chế độ xem, nó sẽ hoạt động ngay cả với các hành động bạn không ghi đè. Đối với vấn đề khác của bạn, tôi không hoàn toàn theo dõi. Bạn có tùy chọn ': database_authenticatable' được đặt trong mô hình của bạn hay không. (ví dụ: phát minh: database_authenticatable) – Olives