Нужно ли вставлять одну поддельную строку в базу данных? - PullRequest
2 голосов
/ 16 января 2011

У меня есть несколько таблиц, как пример.

Users    Books    UsersBookPurchase
UID      BookId   UserId 
UName    Name     BookId
Password Price
Email

Это хорошо. У меня есть собственная система входа в систему, но я также использую стороннюю систему для проверки, например, OpenID или Facebook Authetication. Мой вопрос заключается в том, может ли пользователь успешно войти в систему с использованием аутентификации OpenID или facebook, какие шаги мне нужно сделать, то есть мне нужно вставить одну поддельную строку в таблицу Users, потому что, если я не вставлю, как будет поддерживаться целостность. Я имею в виду, какой идентификатор пользователя я должен вставить в UsersBookPurchase, когда человек, вошедший в систему с использованием аутентификации Facebook, совершил покупку, поскольку UserId является ссылочным ключом из таблицы Users. Пожалуйста, дайте мне общий обзор того, что мне нужно сделать, потому что это довольно распространенный сценарий.

Заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 16 января 2011

В основном да. Не думай об этом как о фальшивом скандале. Что вы должны сделать, это создать реальную учетную запись пользователя на основе данных, предоставленных API Facebook (я не очень знаком с OpenID)

Facebook API предоставит вам имя и фамилию, адрес электронной почты, возможно, некоторые другие данные Facebook не имеет понятия имени для входа, пользователи входят по адресу электронной почты.

Что вы делаете, это просто создаете нового пользователя из данных, предоставленных API.

Есть некоторые вещи, на которые стоит обратить внимание: возможно, пользователь уже зарегистрирован на вашем сайте. Когда вы получаете данные из Facebook, вам следует поискать в своей собственной таблице пользователей, чтобы узнать, принадлежит ли уже адрес электронной почты вашему зарегистрированному пользователю, и в этом случае вы можете сделать несколько причудливых вещей, например пометить этого пользователя как имеющего логин на Facebook.

0 голосов
/ 16 января 2011

Если бы я это сделал, я бы абстрагировал информацию для входа в систему в отдельную таблицу и имел какой-то тип в таблице User. Тип используется для определения того, какой метод аутентификации используется, т. Е. Ваш собственный, Google и т. Д. Если пользователь выбирает альтернативные методы, вам необходимо иметь связь, но с другим типом. Но да, это новый рекорд.

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