Po několika hodinách zkoušení jsem konečně zjistil jak nakonfigurovat role management ve webovém .NET 2.0 Beta 2 projektu na jiném než defaultním SQL.
Pokud chcete pro user a role management (také membership services) používat MsSQL server následujte tyto instrukce:
- Pokud ještě nemáte vytvořenou databázi pro ukládání údajů o uživatelích, vytvořte ji.
- Tuto databázi je třeba doplnit o tabulky a uložené procedury které jsou používány službami Membership. Toho dosáhnete spuštěním toolu aspnet_regsql.exe, který se nachází v adresáři .NETu (typicky: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215). projděte všechny kroky spuštěného wizarda. Pokud budete mít problém s přihlášením do databáze, ujistěte se že uživatel ASPNET má přístupové práva do této databáze.
- Pod rootem (configuration) souboru web.config vytvořte tuto strukturu:
<connectionStrings> <remove name="LocalSqlServer" /> <add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=JménoDatabáze" providerName="System.Data.SqlClient" /> </connectionStrings>
Zjistil jsem totiž, že pokud se pokoušíte použít jiný název connection stringu, tak ne všechno funguje – zejména webadmin tool, ale doufejme že to je jen neduh Beta verze.
Řádek remove odstraňuje z paměti tento, v machine.config definovaný, connection string, a na dalším řádku jej nahradíme svým vlastním. - V system.web sekci je třeba povolit a nastavit roleManager
<roleManager enabled="true" defaultProvider="DefaultRoleProvider"> <providers> <add name="DefaultRoleProvider" type="System.Web.Security.SqlRoleProvider" applicationName="/" connectionStringName="LocalSqlServer" /> </providers> </roleManager>
- A nakonec je třeba definovat ještě membership provider, taktéž v sekci system.web
<membership defaultProvider="DefaultMembershipProvider"> <providers> <add name="DefaultMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LocalSqlServer"/> </providers> </membership>
Toto je minimum potřebné k tomu abyste role management vůbec rozjeli, we web admin toolu pravděpodobně zjistíte že se nedají vytvořit uživatelé. Systém píše „change password“ – problém je v tom že w machine.config je nastaveno že defaultně musím být v heslu obsažena alespon jeden nealfanumerický znak (např. #, @, …).
Což je vzhledem k tomu že o tom UI neinformuje trošku hloupé. Tento požadavek můžete vypnout přidáním atributu
minRequiredNonalphanumericCharacters="0"
do položky provideru rolemanagementu. Pokud máte nainstalován MSDN library k VS 2005 beta 2, tak tady najdete popis tohoto elementu:
ms-help://MS.VSCC.v80/MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.NETDEVFX.v20.en/dv_ASPNETgenref/html/27617d4a-205a-41f0-b2c3-a21aa223d2a9.htm
Rammi.cz » Personalization ASP.NET 2.0 // Kvě 6, 2005 at 08:32
[…] ání — Jiří Herník @ 09:26
Minule jsem psal o tom jak “rozchodit” role management a dnes budu pokračovat podobným směrem. Pokud budete tento blog […]
raddimm // Pro 10, 2006 at 15:17
Zdravim,
cetl jsem tady clanek o aspnet (asi tento) 🙂 a mam takovy problem. vsechno funguje na localhost, ale jakmile to hodim na db ktera visi na hostingu (kde mam diky asp_sqlreg vytvorene tabulky) hodi to:
EXECUTE permission denied on object ‚aspnet_CheckSchemaVersion‘, database ‚progressmedi‘, schema ‚dbo‘
DIKY ZA RADU!!!