Аутентификация пользователей - PullRequest
0 голосов
/ 29 декабря 2010

У меня есть проект с несколькими моделями, такими как студенты, рабочие, администраторы .... Конечно, они получают разные права на сайте. Так что мне было интересно:

Должен ли я регистрировать их с разных точек зрения? так, чтобы каждое из этих представлений с его формами обрабатывало одну (известную) модель в то время, или было бы одинаково легко объединить три из них в одну?.

Я пытался создать одно представление, но первая проблема, с которой я столкнулся, это распознавание того, какой тип пользователя входил в систему, поэтому было проблемой узнать, какое представление я должен показать следующим ...

1 Ответ

1 голос
/ 29 декабря 2010

Одна из фундаментальных философий, лежащих в основе Rails, - это СУХОЙ - не повторяйте себя.Следуя этой философии, кажется довольно излишним иметь три отдельных экрана входа в систему.

В том же духе, студенты, работники и администраторы в отдельных моделях кажутся немного непрактичными.У всех пользователей (предположительно) будут имена, электронные адреса и пароли, а также другая информация.Я бы имел только одну модель и назвал бы эту модель такой, какая она есть - User.Затем я могу настроить группы пользователей следующим образом:

class User < ActiveRecord::Base
  belongs_to :user_group
end

class UserGroup < ActiveRecord::Base
  has_many :users
end

User.first.user_group # => <UserGroup name: 'Students'>
User.find(123).user_group # => <UserGroup name: 'Workers'>
UserGroup.find_by_name('Administrators').users # => [<User ...>, <User ...>, ...]

Внезапно вход в систему перестает быть проблемой.Пользователь аутентифицируется как пользователь, и приложение немедленно узнает, к какой группе пользователей он принадлежит, и может отображать соответствующую информацию таким образом.

Кроме того, я был бы не прав, если бы не далкрик Придумать .Это драгоценный камень для обработки аутентификации, и он определенно сэкономит вам много труда и усилий, если вы подумаете о создании методов аутентификации самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...