Sdílet prostřednictvím


Uživatelé a role na produkčním webu (VB)

od Scotta Mitchella

Poznámka:

Od doby, kdy byl tento článek napsán, byly poskytovatelé členství ASP.NET nahrazeni ASP.NET Identity. Důrazně doporučujeme aktualizovat aplikace tak, aby používaly platformu ASP.NET Identity místo poskytovatelů členství doporučených v době psaní tohoto článku. ASP.NET Identity má řadu výhod oproti systému členství ASP.NET, včetně:

  • Lepší výkon
  • Vylepšená rozšiřitelnost a testovatelnost
  • Podpora OAuth, OpenID Connect a dvojúrovňového ověřování
  • Podpora identit založených na deklaracích
  • Lepší interoperabilita s ASP.Net Core

Nástroj pro správu webu ASP.NET (WSAT) poskytuje webové uživatelské rozhraní pro konfiguraci nastavení členství a rolí a pro vytváření, úpravy a odstraňování uživatelů a rolí. WSAT bohužel funguje jenom při návštěvě z místního hostitele, což znamená, že prostřednictvím prohlížeče nemůžete kontaktovat nástroj pro správu produkčního webu. Dobrou zprávou je, že existují alternativní řešení, která umožňují spravovat uživatele a role v produkčním prostředí. Tento kurz se zabývá těmito alternativními řešeními a dalšími řešeními.

Úvod

ASP.NET 2.0 zavedla řadu aplikačních služeb, což je sada služeb stavebních bloků, které můžete přidat do webové aplikace. Do webu Recenze knih jsme přidali služby Členství a role zpět v kurzu Konfigurace webu, který používá aplikační služby. Služba členství usnadňuje vytváření a správu uživatelských účtů; Služba Role nabízí rozhraní API pro kategorizaci uživatelů do skupin. Web Recenze knih má tři uživatelské účty – Scott, Jisun a Alice – a jednu roli, admin, se Scottem a Jisunem v roli správce.

Aplikační služby ASP.NET nejsou vázány na konkrétní implementaci. Místo toho dáváte aplikačním službám pokyn, aby používaly konkrétního poskytovatele a který implementuje službu pomocí konkrétní technologie. Nakonfigurovali jsme webovou aplikaci Knižní recenze tak, aby používala SqlMembershipProvider a SqlRoleProvider poskytovatele pro služby členství a rolí. Tito dva poskytovatelé ukládají informace o uživatelských účtech a rolích v databázi SQL Serveru a jsou nejčastěji používanými poskytovateli internetových webových aplikací hostovaných ve společnosti pro hostování webu.

Běžným problémem pro vývojáře, kteří používají služby Členství a role, je správa uživatelů a rolí v produkčním prostředí. Jak odstraníte uživatelský účet z produkčního webu, přidáte novou roli nebo přidáte existujícího uživatele do existující role? V tomto kurzu se seznámíte s různými technikami pro správu uživatelů a rolí na produkčním webu.

Použití nástroje pro správu webu ASP.NET

ASP.NET obsahuje nástroj pro správu webu (WSAT), který usnadňuje vytváření a správu uživatelských účtů a rolí a zadávání autorizačních pravidel založených na uživatelích a rolích. Pokud chcete použít WSAT, klikněte v Průzkumníku řešení na ikonu konfigurace ASP.NET nebo přejděte do nabídky Web nebo projekt a zvolte možnost ASP.NET Konfigurace. Oba přístupy spustí webový prohlížeč a nasměruje ho na WSAT na adresu, jako například: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

WSAT je rozdělený do tří částí:

  • Zabezpečení – správa uživatelů, rolí a autorizačních pravidel
  • ApplicationConfiguration – tady můžete spravovat <nastavení appSettings> a SMTP. Odsud můžete také převést aplikaci do offline režimu a spravovat nastavení ladění a trasování a také určit výchozí vlastní chybovou stránku.
  • ProviderConfiguration – nakonfigurujte zprostředkovatele používané aplikačními službami.

Část Zabezpečení (znázorněná na obrázku 1) obsahuje odkazy pro vytváření nových uživatelů, správu uživatelů, vytváření a správu rolí a vytváření a správu pravidel přístupu. Odtud můžete do systému přidat novou roli, odstranit existujícího uživatele nebo přidat nebo odebrat role z konkrétního uživatelského účtu.

Snímek obrazovky nástroje pro správu webu ASP.NET pro vytvoření a správu uživatelů, rolí a pravidel přístupu.

Obrázek 1: Část Zabezpečení WSAT obsahuje možnosti pro správu uživatelů a rolí
(Kliknutím zobrazíte obrázek s plnou velikostí.

WsAT je bohužel přístupný jenom místně. Službu WSAT nelze navštívit na vzdáleném produkčním webu. Pokud navštívíte www.yoursite.com/asp.netwebadminfiles/default.aspx, dostanete odpověď 404 Nenalezeno. Kód, který řídí WSAT, používá Membership a Roles třídy v rozhraní .NET Framework k vytváření, úpravám a odstraňování uživatelů a rolí. Tyto třídy se poradí s informacemi o konfiguraci webové aplikace, aby zjistily, jakého poskytovatele použít; ve konfiguraci webu, který používá aplikační služby kurzu jsme nastavili web Recenze knih tak, aby používal poskytovatele SqlMembershipProvider a SqlRoleProvider. To zahrnovalo přidání <membership> a <roleManager> oddíly do Web.config.

<?xml version="1.0"?>
<configuration>
  ...

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

Všimněte si, že oddíl <membership> a oddíl <roleManager> odkazují na poskytovatele SqlMembershipProvider a SqlRoleProvider ve svém atributu type. Tito zprostředkovatelé ukládají informace o uživateli a roli v zadané databázi SQL Serveru. Databáze používaná těmito zprostředkovateli je určena atributem connectionStringName , ReviewsConnectionStringkterý je definován v ~/ConfigSections/databaseConnectionStrings.config souboru. Vzpomeňte si, že databaseConnectionStrings.config soubor ve vývojovém prostředí obsahuje připojovací řetězec k vývojové databázi, zatímco databaseConnectionStrings.config soubor v produkčním prostředí obsahuje připojovací řetězec k produkční databázi.

Stručně řečeno, WSAT musí být lokálně přístupný v rámci vývojového prostředí a pracuje s informacemi o uživateli a rolích v databázi specifikované v souboru databaseConnectionStrings.config. Pokud tedy změníme informace o připojovacím řetězci v souboru ve databaseConnectionStrings.config vývojovém prostředí, můžeme k místní správě uživatelů a rolí v produkčním prostředí použít WSAT.

Pokud chcete tuto funkci znázornit, otevřete databaseConnectionStrings.config soubor v sadě Visual Studio ve vývojovém prostředí a nahraďte připojovací řetězec vývojové databáze připojovacím řetězcem produkční databáze. Pak spusťte WSAT, přejděte na kartu Zabezpečení a přidejte nového uživatele s názvem Sam. Obrázek 2 znázorňuje obrazovku WSAT při vytváření tohoto účtu.

Snímek obrazovky nástroje pro správu webu S P . N E T k vytvoření nového uživatele ve výrobním prostředí.

Obrázek 2: Vytvoření nového uživatele Sam v produkčním prostředí
(Kliknutím zobrazíte obrázek s plnou velikostí.

Protože jsme změnili připojovací řetězec databaseConnectionStrings.config tak, aby odkazoval na produkční databázový server, Sam byl přidán jako uživatel v produkčním prostředí. Pokud to chcete ověřit, změňte připojovací řetězec v databaseConnectionStrings.config souboru zpět na vývojovou databázi a poté navštivte Login.aspx stránku ve vývojovém prostředí. Zkuste se přihlásit jako Sam (viz obrázek 3).

Snímek obrazovky přihlašovací obrazovky, kde se nově vytvořený uživatel nemůže přihlásit do vývojového prostředí.

Obrázek 3: Ve vývojovém prostředí se nemůžete přihlásit jako Sam
(Kliknutím zobrazíte obrázek s plnou velikostí.

Nemůžete se přihlásit jako Sam ve vývojovém prostředí, protože informace o uživatelském účtu v místní databázi neexistují. Místo toho byla přidána do produkční databáze. Pokud to chcete ověřit, podívejte se na obsah aspnet_Users tabulky ve vývojových i produkčních databázích. Ve vývojovém prostředí by měly existovat pouze tři záznamy pro uživatele Scott, Jisun a Alice. aspnet_Users Tabulka v produkční databázi ale obsahuje čtyři záznamy: Scott, Jisun, Alice a Sam. Proto se Sam může přihlásit prostřednictvím webu v produkčním prostředí, ale ne prostřednictvím vývojového prostředí.

Snímek obrazovky přihlašovací stránky, kde se nový vytvořený uživatel může přihlásit k produkčnímu webu.

Obrázek 4: Sam se může přihlásit na produkčním webu
(Kliknutím zobrazíte obrázek s plnou velikostí.

Poznámka:

Nezapomeňte po dokončení práce s WSAT změnit připojovací řetězec v databaseConnectionStrings.config souboru zpět na připojovací řetězec vývojové databáze, jinak při testování stránky ve vývojovém prostředí budete pracovat s produkčními daty. Mějte také na paměti, že zatímco technika, kterou jsme právě probírali, nám umožňuje používat WSAT ke vzdálené správě uživatelů a rolí, změny jakéhokoliv jiného nastavení WSAT (přístupová pravidla, nastavení SMTP, ladění a trasování atd.) upravují soubor Web.config. V důsledku toho se všechny změny provedené v nastavení vztahují na vývojové prostředí, nikoli na produkční prostředí.

Vytváření vlastních webových stránek správy uživatelů a rolí

WSAT poskytuje předem připravené systémy pro správu uživatelů a rolí, ale lze je spustit pouze místně a vyžaduje provedení změn informací připojovacího řetězce, aby bylo možné spravovat uživatele a role v produkčním prostředí. Většina webů, které podporují uživatelské účty, obsahuje také řadu webových stránek pro správu uživatelů a rolí, které správcům umožňují spravovat uživatele a role ze stránek v rámci webu. Tyto administrativní webové stránky značně usnadňují správu uživatelů a rolí a jsou nezbytné pro weby, kde může být mnoho administrátorů nebo administrátorů, kteří nemají přístup k Visual Studio nebo technické zázemí pro spuštění WSAT.

ASP.NET zahrnuje řadu předdefinovaných webových ovládacích prvků souvisejících s přihlášením, které výrazně usnadňují implementaci mnoha těchto webových stránek pro správu díky jednoduchému principu drag and drop. Můžete například vytvořit stránku pro správce, aby vytvořili nový uživatelský účet přetažením ovládacího prvku CreateUserWizard na stránku a nastavením několika vlastností. Stránka pro vytváření uživatelů ve WSAT zobrazeném na obrázku 2 ve skutečnosti používá stejný ovládací prvek CreateUserWizard, který můžete přidat na stránky. Kromě toho je funkcionalita služeb Členství a Rolí k dispozici programově prostřednictvím Membership a Roles tříd v rozhraní .NET Framework. Pomocí těchto tříd můžete napsat kód pro vytváření, úpravy a odstraňování uživatelů a rolí a také pro přidání nebo odebrání uživatelů do rolí, určení uživatelů v rolích a provádění dalších úloh souvisejících s uživateli a rolemi.

V kurzu Konfigurace webu, který používá aplikační služby jsem přidal stránku do složky Admin pojmenované CreateAccount.aspx. Tato stránka umožňuje správci přidat na web nový uživatelský účet a určit, jestli je nově vytvořený uživatel v roli Správce (viz obrázek 5).

Snímek obrazovky s možností správců vytvářet nové uživatelské účty

Obrázek 5: Správci můžou vytvářet nové uživatelské účty
(Kliknutím zobrazíte obrázek s plnou velikostí.

Podrobnější informace o vytváření administrace stránek uživatelů a rolí, spolu s polopatickým návodem k používání tříd Membership a Roles a souvisejících webových ovládacích prvků ASP.NET pro přihlášení, najdete v kurzech zabezpečení webu. Najdete zde pokyny k vytváření webových stránek pro vytváření nových účtů, vytváření a správu rolí, přiřazování uživatelů k rolím a dalším běžným úlohám správy.

Pokud chcete implementovat funkce podobné WSAT na produkčním webu, můžete vždy vytvořit vlastní řadu webových stránek, které implementují funkce WSAT. Chcete-li začít, podívejte se na zdrojový kód WSAT, který se nachází ve složce %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Další možností je použít alternativu WSAT Dana Clema, kterou sdílí ve svém článku Jak si vytvořit vlastní nástroj pro správu webových stránek. Dan vás provede procesem vytváření vlastního nástroje podobného WSAT, včetně zdrojového kódu aplikace ke stažení (v jazyce C#) a poskytuje podrobné pokyny pro přidání vlastního WSAT na hostovaný web.

Shrnutí

Nástroj pro správu webu ASP.NET (WSAT) lze použít společně s aplikačními službami členství a rolí ke správě informací o uživatelích a rolích pro váš web. WsAT je bohužel přístupný jenom místně a nelze ho navštívit z produkčního webu. Změnou připojovacího řetězce ve vývojovém prostředí tak, aby odkazoval na produkční databázi, můžete použít WSAT ke správě uživatelů a rolí na produkčním webu.

I když přístup WSAT nabízí rychlý a snadný způsob správy uživatelů a rolí, vyžaduje spuštění WSAT ze sady Visual Studio i dočasné změny informací o připojovacím řetězci. WSAT nabízí rychlý způsob, jak spravovat uživatele a role v produkčním prostředí, ale je těžkopádný a nefunguje dobře pro weby s více správci nebo se správci, kteří nemají nebo nejsou obeznámeni se sadou Visual Studio a WSAT. Z těchto důvodů většina webů, které podporují uživatelské účty, obsahuje sadu webových stránek pro správu. Taková sada webových stránek eliminuje potřebu WSAT a je využívána různými administrativními uživateli z libovolného počítače.

Šťastné programování!

Další čtení

Další informace o tématech probíraných v tomto kurzu najdete v následujících zdrojích informací: