تغییر تنظیمات پیشفرض Membership (مانند حداقل طول کلمه عبور) در ASP.NET

تصویر مهدی

در ASP.NET میتوانید به سادگی و با استفاده از ویزارد مربوطه تنها با چند کلیک از طریق منوی ASP.NET Configuration (در قسمت Project) از Membership برای مدیریت کاربران سایت خود استفاده کنید. بحثی که در اینجا میخواهم به آن بپردازم، طریقه استفاده از این ویزارد نیست، بلکه طریقه تغییر تنظیمات پیشفرض آن است. این کار از طریق ویزارد قابل انجام نیست و نیاز به کمی اطلاعات بیشتر از سیستم Membership دارد.
یکی از متداول ترین دلایلی که برنامه نویسان نیاز به تغییر این تنظیمات پیدا میکنند، تغییر شرایط کلمه عبور است. به طور پیشفرض، کلمه عبور باید حداقل 7 کارکتر باشد و حتما شامل یک کارکتر غیر از عدد و حروف نیز باشد. به عنوان مثال myP4ssword از طبق این قانون یک کلمه عبور مناسب نیست و مثلا my$p4ssWord یک کلمه عبور مناسب است. در حالت کلی، فکر بدی نیست که کلمه های عبور دارای امنیت بالا باشند، ولی در بسیاری موارد که مثلا سایت یک سایت داخلی در یک سازمان یا یک سایت آزمایش است، این شرایط بیشتر باعث دردسر کاربران میشود و در این حالت برنامه نویسان معمولا ترجیح میدهند که امکان انتخاب کلمه عبور ساده تری برای کاربران فراهم کنند.
تنظیمات پیشفرض در فایل machine.config قرار گرفته است(در قسمت membership) و یکی از روشهای تغییر این تنظیمات این است که این فایل ویرایش شود ولی از آنجا که تاثیر این کار سراسری و بر روی تمام سایتهای موجود در سرور دیده میشود، بهتر است این تغییر از طریق فایل web.config موجود در ریشه سایت انجام شود.
در اینجا فرض میکنم که میخواهیم کلمه عبور با طول 1 کارکتر و بدون کارکترهای خاص مورد قبول قرار گیرد. برای این کار مقدار minRequiredNonalphanumericCharacters را برابر 0 و مقدار minRequiredPasswordLength را برابر 1 قرار میدهم. همچنین در اینجا میخواهیم استفاده از سوال و جواب امنیتی را نیز حذف کنیم. برای این کار برای requiresQuestionAndAnswer مقدار false قرار میدهم. سایر تنظیمات دقیقا مشابه موجود در machine.config است.
تنها نکته ای که در اینجا وجود دارد اینست که اگر بخواهیم تنظیمات member را تغییر دهیم، باید با استفاده تنظیمات موجود در machine.config که تحت نام AspNetSqlMembershipProvider قرار گرفته اند را حذف کنیم، در غیر اینصورت خطایی مبنی بر تکراری بودن تنظیمات دیده میشود.
پس در نهایت قسمتی که باید به فایل web.config اضافه شود به صورت زیر است (توجه کنید که این قسمت زیر مجموعه system.web قرار میگیرد)

<membership>
	<providers>
		<remove name="AspNetSqlMembershipProvider" />
		<add name="AspNetSqlMembershipProvider"
			type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
			connectionStringName="LocalSqlServer"
			enablePasswordRetrieval="false"
			enablePasswordReset="true"
			requiresQuestionAndAnswer="false"
			applicationName="/"
			requiresUniqueEmail="false"
			passwordFormat="Hashed"
			maxInvalidPasswordAttempts="5"
			minRequiredPasswordLength="1"
			minRequiredNonalphanumericCharacters="0"
			passwordAttemptWindow="10"
			passwordStrengthRegularExpression="" />
	</providers>
</membership>