Tuesday, October 28, 2008

วิธี Config Membership Database ASP.NET 2.0

วิธี Config Membership Database ASP.NET 2.0

Membership มีประโยชน์ในการนำมาสร้างระบบจัดการสิทธิ์การเข้าถึงส่วนของ Website ต่างๆ หรือระบบสมาชิกนั่นแหละครับ โดยมีวิธีขั้นตอนในการสร้างดังนี้

ขั้นที่ 1. สร้าง Membership, Role, และ Profile ต่างๆ ในฐานข้อมูล
ก่อนอื่นจะต้องก Install Membership ด้วย Tool ตัวหนึ่งที่ชื่อ aspnet_regsql ที่ SQL Server ได้เตรียมไว้ให้แล้วเพื่อสร้างตารางและ store procedures ของ Membership ให้อัตโนมัติ โดยเครื่องมือนี้สามารถรันผ่าน conmmand prompt หรือผ่าน UI ก็ได้ ซึ่งเปิดมาจะเป็น wizard ซึ่งมีวิธีดังนี้
  1. ไปที่ Start > Run แล้วไปที่ Folder ถ้าเป็น default ของมันปกติจะอยู่ที่ C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\
  2. จากนั้นให้เลือกที่ aspnet_regsql.exe แล้ว click run ขึ้นมา จะเห็น wizard ขึ้นมาเป็น configure the SQL Server provider
  3. เลือกที่ Configure SQL Server for application services แล้วกด Next
  4. เปลี่ยน authentication เป็น SQL Server authentication
  5. ใส่ username และ password
  6. เลือก server และ database ที่ต้องการได้เลย
  7. กด next เพื่อสร้าง database แล้วปิดได้เลย
ขั้นที่ 2. แก้ไข Web.Config เพื่อชี้ไปที่อยู่ของ Database

Copy code นี้ไปเลย ซึ่งตัวเอียงคือค่าที่คุณต้องใส่เข้าเอง

<connectionStrings>
<clear />
<add name="TestSqlServer" connectionString="server=servername;user id=username;password=mypassword;database=databasename"/>
</connectionStrings>

ซึ่งจะต้อง Clear ค่า Default ก่อนแล้วจึง add database ของเราเข้าไป

แล้วเอา code ไปใส่ครับ เต็มๆ พวกชื่อ Provider ตัวหน้าอะไรก็ดูให้ตรงกับที่เราจะตั้งนะครับ

<system.web>

<membership defaultProvider="TestSqlMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="TestSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="TestSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
< /providers>
</membership>

<roleManager defaultProvider="TestSqlRoleProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPXROLES"
cookiePath="/"
cookieTimeout="30"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
createPersistentCookie="false"
cookieProtection="All"
>
<providers>
<remove name="AspNetSqlRoleProvider" />
<remove name="AspNetWindowsTokenRoleProvider" />
<add connectionStringName="TestSqlServer"
applicationName="/"
name="TestSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</providers>
</roleManager>

<profile defaultProvider="TestSqlProfileProvider">
<providers>
<remove name="AspNetSqlProfileProvider" />
<add name="TestSqlProfileProvider"
connectionStringName="TestSqlServer"
applicationName="/"
type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</profile>
</system.web>

ขั้นที่ 3. แก้ไข Web.Config โดยใช้ Web Site Administration Tool
วิธีเข้าคือให้เข้าไปที่ VS.NET แล้ว ไปที่ ASP.NET Configuration จากนั้นให้สร้าง user ใหม่ หรือ role มันจะไปสร้าง objects ในฐานข้อมูลของเรา แล้วก็สามารถเลือกที่ Provider tab และเลือก "Select a different provider for each feature(advanced)" ก็ให้เลือกที่ Provider ที่ตั้งชื่อไว้เมื่อ Step 2

* อย่าลืมใส่ Matchine Key ใน Web.config ด้วยนะครับ ไม่งั้น Create User ไม่ได้นะครับ

ref : http://aspnet.4guysfromrolla.com/articles/120705-1.aspx