<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>آرایه &#187; web.config</title>
	<atom:link href="http://www.saeedifard.com/tag/web-config/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.saeedifard.com</link>
	<description>نوشته‌ های حامد سعیدی فرد درباره فناوری اطلاعات و کارآفرینی</description>
	<lastBuildDate>Thu, 02 Feb 2012 06:47:22 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>پرسش&#8204;های متداول درباره ASP.NET Membership</title>
		<link>http://www.saeedifard.com/1388/05/asp-net-membership-faq/</link>
		<comments>http://www.saeedifard.com/1388/05/asp-net-membership-faq/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 09:21:48 +0000</pubDate>
		<dc:creator>حامد سعیدی فرد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[membership]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[rolemanager]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://www.saeedifard.com/1388/05/asp-net-membership-faq/</guid>
		<description><![CDATA[توضیح: این یادداشت به تدریج تکمیل و به روز خواهد شد، لطفاً اگر سوال یا ابهامی در مورد نحوه کار با ASP.NET Membership داشتید کامنت بگذارید. اغلب کسانی به تازگی با ASP.NET آشنا می‌شوند در استفاده از امکانات membership سوالات و مشکلاتی دارند که در این نوشته به برخی از آن‌ها نگاهی می‌اندازیم. حذف ASPNETDB [...]<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></description>
			<content:encoded><![CDATA[<blockquote>
<p align="justify"><strong>توضیح: </strong>این یادداشت به تدریج تکمیل و به روز خواهد شد، لطفاً اگر سوال یا ابهامی در مورد نحوه کار با ASP.NET Membership داشتید کامنت بگذارید.</p>
</blockquote>
<p align="justify">اغلب کسانی به تازگی با ASP.NET آشنا می‌شوند در استفاده از امکانات membership سوالات و مشکلاتی دارند که در این نوشته به برخی از آن‌ها نگاهی می‌اندازیم.</p>
<p align="justify"><strong>حذف ASPNETDB<br />
</strong>به صورت پیش فرض وقتی شما از یکی از کنترل‌های مربوط به ASP.NET Membership مثلاً CreateUserWizard استفاده می‌کنید یک دیتابیس به نام ASPNETDB در پوشه App_Data ساخته می‌شود.<br />
اگر می‌خواهید از دیتابیسی که خودتان ساخته‌اید برای کار با ASP.NET Membership استفاده کنید باید کارهای زیر را انجام بدهید:</p>
<p align="justify">۱-commnad prompt ویژوال استودیو را اجرا کنید و در آن دستور aspnet_regsql را بنویسید، در پنجره‌ای که باز می‌شود دیتابیسی که می‌خواهید از membership در آن استفاده کنید را مشخص کنید تا جداول و دیگر موارد مربوط به membership به آن اضافه شود. <a rel="nofollow" href="http://hyperweb.wordpress.com/2007/03/11/%D8%B3%D8%B1%D9%88%DB%8C%D8%B3%D9%87%D8%A7%DB%8C-aspnet-20-%D8%AF%D8%B1-sql-server-2000/" target="_blank">توضیحات بیشتر…</a></p>
<p align="justify">۲-یک Connection String در web.config خودتان برای دیتابیسی که ساخته‌اید ایجاد کنید.</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">connectionStrings</span><span style="color: blue">&gt;
   &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>"   <span style="color: red">
   connectionString</span><span style="color: blue">=</span>"Your_Connection_string"
   <span style="color: red">providerName</span><span style="color: blue">=</span>"<span style="color: blue">System.Data.SqlClient</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">connectionStrings</span><span style="color: blue">&gt;</span></pre>
<p align="justify">3-حالا باید به اجزای مختلف ASP.NET Membership بگویید که با استفاده از connection string ای که در مرحله قبل ساختید به دیتابیس شما متصل شوند. به عنوان مثال:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">membership </span><span style="color: red">defaultProvider</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>" <span style="color: red">userIsOnlineTimeWindow</span><span style="color: blue">=</span>"<span style="color: blue">20</span>"<span style="color: blue">&gt;
   &lt;</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
      </span><span style="color: blue">&lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>"
       <span style="color: red">type</span><span style="color: blue">=</span>"<span style="color: blue">System.Web.Security.SqlMembershipProvider</span>"
       <span style="color: red">connectionStringName</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>" <span style="color: red">applicationName</span><span style="color: blue">=</span>"<span style="color: blue">/</span>"<span style="color: blue">/&gt;
   &lt;/</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">membership</span><span style="color: blue">&gt;</span></pre>
<p align="justify">این کار را می‌توانید برای دیگر اجزای membership‌ مثل rolemanager و profile هم انجام دهید.</p>
<p align="justify"><strong>پیدا کردن UserId</strong></p>
<p><strong> </strong>فرض کنید در وب سایت یا برنامه‌ای که در حال پیاده‌سازی آن هستید رابطه (relation) بین جداول ساخته شده توسط شما و جداول asp.net membership وجود دارد. معمولاً این رابطه با جدول aspnet_Users و با فیلد UserId است. حالا در برنامه‌تان باید به شکلی UserId را پیدا کنید. تابع زیر با گرفتن یک username به عنوان پارامتر userId آن کاربر را به شکل رشته برمی‌گرداند:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">public string </span>GetUserId(<span style="color: blue">string </span>userName)
{
  <span style="color: #2b91af">MembershipUser </span>myObject = <span style="color: #2b91af">Membership</span>.GetUser(userName);
  <span style="color: blue">string </span>UserID = myObject.ProviderUserKey.ToString();
  <span style="color: blue">return </span>UserID;
}</pre>
<p align="justify"><strong>حذف Security Quesion‌ و Security Answer</strong></p>
<p><strong> </strong>حذف Security Question و Security Answer و همچنین تغییر قانون مربوط به کلمه عبور نیز از جمله سوالات متداول مربوط به ASP.NET Membership است. این کار را می‌توانید از طریق ویرایش provider ای که برای membership‌ در web.config تعریف کرده‌اید انجام دهید:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">membership </span><span style="color: red">defaultProvider</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>" <span style="color: red">userIsOnlineTimeWindow</span><span style="color: blue">=</span>"<span style="color: blue">20</span>"<span style="color: blue">&gt;
 &lt;</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
   </span><span style="color: blue">&lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>"
    <span style="color: red">type</span><span style="color: blue">=</span>"<span style="color: blue">System.Web.Security.SqlMembershipProvider</span>"
    <span style="color: red">connectionStringName</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>"
    <span style="color: red">minRequiredPasswordLength</span><span style="color: blue">=</span>"<span style="color: blue">5</span>"
    <span style="color: red">minRequiredNonalphanumericCharacters</span><span style="color: blue">=</span>"<span style="color: blue">0</span>"
    <span style="color: red">requiresQuestionAndAnswer</span><span style="color: blue">=</span>"<span style="color: blue">false</span>"
    <span style="color: red">applicationName</span><span style="color: blue">=</span>"<span style="color: blue">/</span>"<span style="color: blue">/&gt;
 &lt;/</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">membership</span><span style="color: blue">&gt;</span></pre>
<p align="justify"><strong> </strong></p>
<p align="justify">در مثال بالا membership برای کلمات عبوری با حداقل طول ۵ کاراکتر و بدون نیاز به کاراکترهای غیرحرف و عددی و همین‌طور برای عدم استفاده از Security Question و Security Answer تنظیم شده است.</p>
<p align="justify"><strong>ویرایش پروفایل کاربران دیگر</strong></p>
<p><strong> </strong>ویرایش پروفایل کاربر جاری به راحتی امکان پذیر است، اما برای ویرایش پروفایل دیگر کاربران می‌توانید از تابع زیر استفاده کنید. قبل از هر چیز فرض می‌کنیم دو property تحت عنوان‌های Name و Family به پروفایل در web.config اضافه کرده‌ایم:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">profile</span> <span style="color: red">automaticSaveEnabled</span><span style="color: blue">=</span>"<span style="color: blue">false</span>" <span style="color: red">enabled</span><span style="color: blue">=</span>"<span style="color: blue">true</span>"<span style="color: blue">&gt;
  </span><span style="color: blue">&lt;</span><span style="color: #a31515">properties</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Name</span>"<span style="color: blue">/&gt;
    &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Family</span>"<span style="color: blue">/&gt;
  &lt;/</span><span style="color: #a31515">properties</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">profile</span><span style="color: blue">&gt;</span></pre>
<p align="justify">تابع زیر username کاربر را به عنوان ورودی گرفته و تغییرات داده شده روی نام و نام خانوادگی کاربر(که قبلاً در web.config تعریف شده‌اند) را در پروفایل کاربر ثبت می‌کند، شما می‌توانید این تابع را با توجه به نیاز خود و فیلدهای پروفایلی که تعریف کرده‌اید سفارشی کنید:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">private void </span>UpdateProfile(<span style="color: blue">string </span>userName)
{
   <span style="color: #2b91af">ProfileCommon </span>userProfile = Profile.GetProfile(userName);
   userProfile.Name = txtName.Text;
   userProfile.Family = txtFamily.Text;
   userProfile.Save();
}</pre>
<p align="justify">با استفاده از کد بالا می‌توانید یک فرم ثبت‌نام سفارشی برای خودتان بسازید که شامل نام‌ کاربری، کلمه عبور، پست الکترونیک، نام و نام خانوادگی است. اگر پنج textbox برای هریک از این فیلدها داشته باشید کد شما برای اضافه کردن یک کاربر، به همراه نام و نام خانوادگی به شکل زیر خواهد بود:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">private void </span>Register()
{
<span style="color: green"> //Add User
 </span><span style="color: #2b91af">MembershipUser </span>newUser =
  <span style="color: #2b91af">Membership</span>.CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text);
 <span style="color: #2b91af">Membership</span>.UpdateUser(newUser);
 <span style="color: green">//Add Name and Family
 </span><span style="color: #2b91af">ProfileCommon </span>userProfile = Profile.GetProfile(txtUsername.Text);
 userProfile.Name = txtName.Text;
 userProfile.Family = txtFamily.Text;
 userProfile.Save();
}</pre>
<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saeedifard.com/1388/05/asp-net-membership-faq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

