Doğrulama benim etki ya da benim uygulama bir endişe var mı?

3 Cevap php

Ben bir nesne yönelimli bir şekilde benim web uygulaması kimlik tasarımı çalışıyorum. Bu böyle bir şey olurdu bu durumda benim etki bir husustur:

$user->authenticate($authenticator);
$user->login($authenticator);

$ Authenticator benim kimlik doğrulama hizmeti için bir arayüz olduğu.

Yoksa bu bir çapraz kesim endişe olurdu ve ben çevresinde başka bir şekilde yapardı.

$authenticator->authenticate($user);
$session->setUser($user);

Benim kullanıcı nesnesi bir şey sormak zorunda değilsiniz çünkü ilk yolu, bana daha "OO" görünüyor ... o BİLGİLERİ doğrulayıcı ihtiyaçlarını geçer. Ben belli bir açıdan benim etki "kirleten" gibiyim ama hissediyor ... oturum benim uygulama bir iş gerekliliği değil ... ben korumak için kimlik doğrulama yöntemi gerektiği gerçeği bir yan etkisi benim uygulama.

3 Cevap

Alan merkezi bir kavram olarak kimlik doğrulamasını içerir sürece, ben bir kesişen endişe değil, etki alanı modeli bir parçası olduğunu söyleyebilirim.

En geliştiriciler iş uygulamaları yazılım güvenliği tamamen farklı bu model bir şey yazmak. Doğrulama birçok uygulama çok önemli bir parçası, ama gerçekten Alanına kendisi ile hiçbir ilgisi yoktur.

Yani bir nesne yönelimli bir şekilde kimlik doğrulaması ile baş edemez anlamına gelmez.

Bir Generic Subdomain olarak kimlik doğrulama ve diğer güvenlik kavramları uygulamak tercih süre Domain-Driven Design terminolojisinde, modelini iş kavram Core Domain parçasıdır.

Ben php-belirli şeyler ile yardımcı olamaz, ama. NET'te, güvenlik bunu doğru yaparsanız, sadece platform tarafından işlenir oldu oldukça fazla bir şeydir. İşte bu uygulama ile gerçekten çapraz kesme endişe bulunuyor, böylece başka bir yerde (FWIW) yapıldığını nasıl.

IMHO bir Authenticator'ı geçen kötü OO olduğunu. Neden bir kullanıcı kendini doğrulamak için nasıl anlamak gerekir? Bu bile bir gerçekliği olduğunu bilmek gerekmez bir kullanıcı bulunuyor. Eğer böylece kullanıcıya Doğrulayıcı farklı geçmek için ihtiyacı olan bir kullanıcı kimlik doğrulaması farklı yollarla sahip düşünmüyorsanız Ayrıca, bir Doğrulayıcıyı geçen bana garip geliyor. Eğer kimlik doğrulama, uygulamanız önemli bir parçası değil gibi görünüyor yapmak bu yüzden size bir kullanıcı kimlik doğrulaması birden fazla yol olacaktır şüphesiz.

Ben hala bana overkill gibi görünüyor olsa da ikinci yaklaşım daha mantıklı düşünüyorum. Benim favori çerçeve symfony ve onlar kimlik doğrulaması yapar sfGuard denilen büyük bir eklentisi var. source code of the plugin bir göz atın ve size herhangi bir ilham verir olmadığını görmek.

Bağlantı

$user->authenticate($authenticator);
$user->login($authenticator);

Kontrol Ters

$authenticator->authenticate($user);
$session->setUser($user);

Bağlantı is bad, inversion is good. Go with the later.