2012-06-07 2 views
0

Я хочу использовать janrain для своей системы входа в систему, все готово, но я не знаю, как построить мою базу данных, что такое дизайн базы данных для использования openID? особенно когда некоторые пользователи имеют несколько разных провайдеров, как я могу узнать, кто они такие: новый пользователь или старый? Я хочу, чтобы у него был полный дизайн базы данныхЧто такое дизайн базы данных для использования openID?

+2

* Я хочу, чтобы у него был полный дизайн базы данных * - SO - это не место, где другие люди пишут ваш код или разрабатывают ваши базы данных. Мы помогаем вам, хотя, если вы покажете нам, что вы пробовали, и какая у вас проблема. – ThiefMaster

+0

Голосование, чтобы закрыть. Когда вы хотите, чтобы кто-то выполнял всю вашу работу за вас, это, вероятно, слишком локализованный вопрос. Мы здесь, чтобы ответить на конкретные проблемы, но большинство людей здесь также хотят, чтобы вы участвовали в процессе решения и сами делали некоторые работы. Иначе вы никогда не узнаете ничего. –

+0

Спасибо, я не имел в виду that.i иметь мой дизайн db, но я не был уверен в этом, я хочу знать, есть ли у моих пользователей более одного OPENDID, как я могу их сопоставить, и что еще более важно, как я могу знать, если он ([email protected]), он ([email protected]). это мой вопрос. Есть ли способ, кроме просьбы добавить его OpenID или нет? – user539656

ответ

1

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

Примером может быть, как показано ниже:

create table users (
first_name varchar(50), 
last_name varchar(50), 
email_address varchar(100), 
openId varchar(150)); 

вы можете также установить индекс для OpenId, так что поиски быстрее, когда вы регистрируете пользователя в приложении. Также добавьте ограничение UNIQUE, чтобы две строки не были доступны для пользователя с таким же открытым идентификатором

0

Все, что вам нужно, это столбец, в котором вы храните URL-адрес, возвращаемый любой библиотекой OpenID, которую вы используете.

Возможно, вы можете поместить это в отдельную таблицу, которая имеет только identity и userid столбцы, поэтому пользователь может иметь более одного открытого ключа, назначенного для его учетной записи.

0

Я предлагаю вам что-то, что я сделал в своем приложении. У меня столбец в таблице users, который является логическим. 1, если пользователь использует openID и 0, если нет. Другой таблицей будет таблица opneid, в которой есть поставщик и ключ, предоставленный им, когда они используют открытый идентификатор. Таким образом, вы будете иметь три сценария следующим образом:.

  1. пользователь уже вошел в систему и хочет добавить OpenId в следующий раз он не зайдет
  2. пользователь уже зарегистрирован, но хочет использовать OpenId в следующий раз он входит в .
  3. Пользователь не зарегистрирован и хочет войти в систему, используя OpenID.

Это то, что я сделал:

  1. Детали уже хранятся так Lookup для текущего вошедшего в систему пользователя и сделать логическое OpenId к истинным и добавить детали OpenId он обеспечит.

  2. Когда он нажимает на openID, спросите его, если он уже зарегистрирован, и если он запрашивает идентификатор электронной почты и пароль, а затем используйте сведения OpenID.

  3. (Это самая сложная часть) Сделайте openID boolean 1 и добавьте детали OpenID, а затем дайте ему форму, которая просто запрашивает важные сведения, которые подходят для вашего приложения. В зависимости от масштаба вашего приложения вам может не понадобиться вторая форма. В приложении я работал над необходимой дополнительной информацией от пользователя. Если вы хотите пропустить второй шаг, вы можете посмотреть некоторые из опций, предоставляемых Facebook API, для получения сведений о файле first_name last_name и сохранения.

Поэтому, когда пользователь регистрируется, если для буфера OpenID установлено значение 0 или 1, если оно установлено в 1, то используйте соответствующие данные OpenID, которые вы могли бы сохранить с соответствующими объединениями.

Самая сложная часть, которую я нашел, был третьим шагом, где я должен каким-то образом не брать пароль от пользователей, которые используют OpenID. Это нарушало ограничения db. Я не мог снять ограничение, потому что это вызовет проблемы для других пользователей, которые хотят зарегистрироваться.Поэтому мне пришлось каким-то образом обойти ограничение для пользователей openID. Это может быть не лучшее решение, но оно может помочь вам. Удачи !!