Вы спросили, странно ли это?
Нет, это не так.Мне часто приходится решать одну и ту же проблему.Когда вы используете драгоценный камень, вам часто нужно адаптировать его к вашим потребностям.Когда вы обновляете этот драгоценный камень, вам может потребоваться применить ваши изменения снова, или у вас возникла проблема, когда драгоценный камень начинает действовать по-другому, как вам нужно.
Когда вы создаете свое собственное решение, вы это знаетену (так что вам не нужно иметь дело с ошибками других людей, только с вашими собственными), решение всегда точно соответствует вашим потребностям, и вы меняете его всякий раз, когда вам нужно.
Примеры драгоценных камней, которые выuse (bcrypt и mysql2) являются хорошими примерами некоторых очень общих задач, которые не нуждаются в каких-либо модификациях во время жизни вашего приложения.Вам не нужно будет менять крипто-протоколы, также как и соединения с базой данных не требуют изменений для конкретного приложения.
Но система аутентификации может потребовать адаптации, поэтому лучше полагаться на собственное независимое решение.Однако вы можете скопировать «их» решения, не ставя ваш проект в зависимость от «чужого» кода.Проект gnulib использует аналогичный подход.
ОБНОВЛЕНИЕ:
См. Статью http://www.aidanf.net/rails_user_authentication_tutorial. Там вы найдете несколько причин для написания собственной системы аутентификации.объяснил гораздо лучше чем я пытался;)