source

소셜 로그인 구현을 위한 데이터베이스 구조?

factcode 2023. 7. 23. 14:44
반응형

소셜 로그인 구현을 위한 데이터베이스 구조?

제 애플리케이션에는 다음과 같은 구조를 가진 "사용자" 테이블이 있습니다.

CREATE TABLE IF NOT EXISTS `users` (
  `userId` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(128) NOT NULL default '',
  `password` varchar(32) NOT NULL default '',
  `email` text NOT NULL,
  `newsletter` tinyint(1) NOT NULL default '0',
  `banned` enum('yes','no') NOT NULL default 'no',
  `admin` enum('yes','no') NOT NULL default 'no',
  `signup_ip` varchar(20) NOT NULL default '',
  `activation_key` varchar(60) NOT NULL default '',
  `resetpassword_key` varchar(60) NOT NULL default '',
  `createdon` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`userId`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

Facebook, Twitter, Open을 통한 소셜 로그인을 구현하고 싶습니다.스택 오버플로와 마찬가지로 내 응용 프로그램의 ID입니다.

저는 당신이 그 개념을 소개하는 것을 제안하고 싶습니다.AuthenticationProvider:

CREATE TABLE IF NOT EXISTS `AuthenticationProvider` (
`ProviderKey` varchar(128) NOT NULL,
`userId` int(10) unsigned NOT NULL,
`ProviderType` enum('facebook','twitter', 'google') NOT NULL, 
PRIMARY KEY  (`ProviderKey`) )  
ENGINE=MyISAM  DEFAULT CHARSET=latin1;

각 로그인 공급자는 사용자에게 고유한 키를 제공합니다.저장 위치ProviderKey.그ProviderType이 로그인 공급자에 대한 정보가 포함되어 있습니다.ProviderKey에 속하며, 마지막으로,userId열은 정보를 다음과 결합합니다.users표. 그래서 당신이 로그인 제공자 중 하나로부터 성공적인 로그인을 받으면 당신은 그에 상응하는 것을 발견합니다.ProviderKey표에서 해당 사용자에 대한 인증 쿠키를 설정합니다.

저는 당신이 그것을 원하는지 잘 모르겠습니다.ProviderType…이 되는enum이것들을 담을 수 있는 다른 테이블을 만드는 것이 아마도 더 정확할 것입니다.

예를 들어, 사용자가 처음으로 사이트에 등록하고 Facebook을 통해 로그인할 때, 당신은 다음에서 행을 만들어야 합니다.users테이블. 그러나, 없을 것입니다.password,activation_key그리고.resetpassword_key관련된.따라서 이러한 필드를 별도의 테이블로 이동하여 다음을 수행할 수 있습니다.users테이블에는 핵심 사용자 데이터만 포함되며 단일 로그인 메커니즘(암호/암호)에만 관련된 데이터는 포함되지 않습니다.

이것이 이치에 맞고 올바른 방향을 가리키기를 바랍니다.

/클라우스

언급URL : https://stackoverflow.com/questions/4793302/database-structure-for-social-login-implementation

반응형