Tôi đang tự hỏi cách triển khai chiến lược xác thực tùy chỉnh bằng cách sử dụng devise :token_authenticable
.Chiến lược xác thực tùy chỉnh cho phát triển Sử dụng: token_authenticable
Tôi đã tìm thấy hướng dẫn về cách thực hiện bằng mô hình sử dụng devise :database_authenticatable
được bao gồm here.
Mô hình im cố gắng xác thực được đặt tên là Pupil
. Vì vậy, đây là chiến lược hiện tại của tôi (nằm trong config/initializers/custom_auth.rb
):
Warden::Strategies.add(:auth_pupil_strategy) do
# missing valid? method indicates this strategy is always applied
def authenticate!
fail!("YOU SHALL NOT PASS!")
end
end
Và trong tôi config/initializers/devise.rb
(cũng đã thử nó mà không có sự :scope => :pupil
):
config.warden do |manager|
manager.default_strategies(:scope => :pupil).unshift :auth_pupil_strategy
end
Vì vậy, điều này sẽ dẫn đến việc người dùng không beeing thể để đăng nhập, nhưng bằng cách nào đó chiến lược này không được áp dụng khi chuyển từ devise :database_authenticatable
sang devise :token_authenticable
.
Có thể tôi chỉ thiếu đúng :scope
tại đây.
Bây giờ, đây là điều kỳ lạ: Bất cứ khi nào người dùng nhập mã thông báo không hợp lệ, chiến lược của tôi được gọi và "BẠN SALL KHÔNG CHẠY!" Được trả lại. Tuy nhiên khi mã thông báo chính xác được cung cấp, người dùng có thể đăng nhập tốt.
xấu hổ mà không ai là abl e để giúp bạn với điều này. Bạn có thể tìm được giải pháp không? – seanhussey
có thể http://kyan.com/blog/2013/10/11/devise-authentication-strategies sẽ trợ giúp? –
Bạn phải triển khai 'hợp lệ?' phương pháp cho chiến lược của bạn. Tôi không biết liệu điều đó có giải quyết được gì không, nhưng chắc chắn đó là điều kiện tiên quyết cho bất kỳ chiến lược nào (xem ví dụ: liên kết của John Beynon). – conciliator