Benim şimdiki giriş Sistemi ile Açık kimliği ekleme?

3 Cevap php

Şu anda benim web Open ID kimlik kuruyorum ve benim şimdiki Giriş Sistemi ve veritabanı ile birleştiren sorun yaşıyorum ... Ben Plaxo de makaleyi okuyun & ettik Bu OpenID bilgi depolamak için tablonun bu tip önerir ...

create table user_openids (
  openid_url varchar(255) not null,
  primary key (openid_url),

  user_id int not null,
  index (user_id)
);

Bu benim şimdiki Kullanıcılar-info tablo

Userid(PRIMARY) | username(UNIQUE) | password | Email

Userid is used to reference user-details for comments, ratings etc. (So it goes into the comments table and the ratings table as a User identifier)

I want a system similar to what Stack overflow uses just login using your Open ID and it gives you an unknown(OPENID-provider) display name.... while keeping my current login system intact.
1) How can I add Open ID details of users to my current Users-Info Table without affecting the current login setup?
2) Currently I use User-id(generated unique for every user) to store in the session to maintain Login. What should I do now in case of Open ID?

*My Thoughts(I don't know if I am right or not)
- Add an open-id field to store the unique open id url provided by the open id provider for each user and set it to null for non-open-id-users.
- Make User-id a text field and store a md5 of the open id url.(store this in session to maintain Login).
- I have no idea how can I handle Display-name/Username which is set to unique for each user because I would like to show unknown(OPENID_provider) (for users using open-id) which can be changed from the profile settings...

Any suggestions would be helpful....Thanks

3 Cevap

Openids: kullanıcılardan çok: göstermek masa düzeni ile fikir 1 olmasıdır.

Böylece, kullanıcılar tabloya herhangi bir değişiklik ihtiyaç vardır.

Birisi bir OpenID ile oturum açtığında OpenID openids tablosunda ise, kontrol. Eğer öyleyse, kullanıcının user_id var ve yapılır.

Aksi halde (hiçbir kullanıcı adı / parola seti ile) yeni bir kullanıcı oluşturun ve openids tabloya onlar için bir (OpenID, User_id) çifti eklediğinizde.

Normalde kimin adı boş kullanıcıları için kullanıcı adınızı görüntülemek istiyorsunuz nerede şablon ne güzel yer tutucu (kendi gibi OP gibi, ya da ne olursa olsun) görüntüleyebilirsiniz.

Umarım zaten boş şifreleri ile giriş vermemek, yani orada hiçbir güvenlik sorunu olmamalıdır.

Ne bu konuda?

  • Benzersiz olmak zorunda değildir users tabloya, bir display_name sütun ekleyin.
  • Yap username ve password users isteğe bağlı olarak
  • Biri OpenID ile kaydettirdiğinde, boş kullanıcı adı / parola ve "unkonwn (sağlayıcı)" olarak ayarlanmış görünen ad ile users bir satır oluşturun.
  • Onlar parola tabanlı giriş geçmek istiyorsanız kullanıcılar, kullanıcı adı / parola ayarlamak için izin verir.
  • Mevcut kullanıcılar OpenID tabanlı giriş geçiş böylece kullanıcılar, kendi OpenIDs yönetmesine izin ver.

Bu, kullanıcıların kullanıcı adı / şifre var anlamına gelir, ama onlar yok. Onlar da bir veya birden fazla OpenIDs olabilir, ama onlar yok. Onlar olmayan benzersiz bir ekran adı kullanabilirsiniz.

Option 1: Only one login type is allowed

İşte benim önerim var (ilgili tüm iş mantığını düzenlemek için ihtiyacı önlemek için GÜNCEL username):

  1. loginid, OpenIDs ve eski adlarının saklanmasına izin bu sütunda UNIQUE INDEX Ekle de denilen yeni bir sütun oluşturun.
  2. loginid username gelen mevcut verilerle doldurmak
  3. DELETE INDEX username onları olmayan benzersiz olmasını sağlamak için den. Açıklandığı gibi ayarlanmalıdır OpenID yeni bir kullanıcı, (google) bilinmeyen username değer oluştururken.
  4. , Eski oturumları için password tutun OpenID için bunu görmezden.
  5. Yerine kullanıcı adı daha LoginID aramak için kod sadece AUTH bölümünü güncelleyin.

Option 2: Allow multiple logins (also easily extends to linking multiple profiles from various sources)

  1. Bir ana kullanıcı tablo olarak durmak ve (yukarıdaki örnekte belki email) kullanıcı başına gerekli tüm alanları içeren yeni bir tablo oluşturun.
  2. Içeren kimlik depolamak için bir tablo oluşturun: userid (FK kaydını master), username (giriş programına uygun mağaza adı), {[(3 )]}

Orada bu seçeneklerin her ikisi ile kusurları besbelli, ama umarım doğru yönde başlamak olacaktır.