PDA

View Full Version : دستکاری Web.Config



AspNet
دوشنبه 29 فروردین 1384, 15:31 عصر
با عرض احترام

خواستم بپرسم چه موقع نیاز به دستکاری فایل web.config هست؟

اگه میشه مخصوصا اون قسمت authentication و authorization رو توضیح بدید.

با تشکر: AspNet

omid_Ahmadi
دوشنبه 29 فروردین 1384, 17:01 عصر
زمانی که بخواهید نوع و تنظیمات مربوط به Security برنامه خود را تغییر دهید میتوانید از Authentication استفاده کنید.
ساختار کلی این بخش به صورت زیر است:


<authentication mode="mode">
<forms name="name" loginUrl="loginUrl" protection="protection" timeout="timeout" path="path">
<credentials passwordformat="passwordformat">
<user name="name" password="password"/>
</credentials>
</forms>
</authentication>

این المنت یک Attribute به نام mode دریافت میکند که در جلوی آن میتوانید حالت بررسی هویت کاربران خود را تعیین کنید. این Attribute میتواند شامل یکی از مقادیر ذیل شود: Windows,Forms,Passport,None همانطور که از اسم هرکدام مشخص است اولی برای تعیین هویت توسط ویندوز دومی برای تعیین هویت توسط خود برنامه سومی برای تعیین هویت توسط سیستمNET Passport. مایکروسافت و آخری برای اینکه کاربران بدون تعیین هویت شدن از سایت استفاده کنند استفاده میشود.
در داخل قسمت فرم میتوانید از nameAttribute برای تنظیم نام کوکی حاوی اطلاعات اعتباری کاربران استفاده کنید. مقدار پیش فرض authaspx. است.
protectionAttribute معین میکند که ASP.NET به چه صورت از کوکیهای مربوط به این بخش در کامپیوتر کلاینت محافظت کند مقادیر قابل قبول برای این بخش شامل: All,Encryption,Validation,None میباشند.
timeoutAttribute برای تنظیم زمان باقی ماندن کوکیهای مربوط به این بخش در کامپیوتر کلاینت هستند. مقدار پیشفرض 30 است.

بقیه شو در اولین فرصت مینویسم.

AspNet
دوشنبه 29 فروردین 1384, 17:32 عصر
عالی بود
منتظر بقیش هم هستم بی صبرانه

omid_Ahmadi
سه شنبه 30 فروردین 1384, 07:32 صبح
در ادامه توضیح راجع به name Attribute باید ذکر کنم که این مورد زمانی استفاده میشود که بیش از یک برنامه روی سرور از Forms Authentication استفاده میکنند و بنابراین شما باید برای هر کدام یک نام کوکی مجزا و واحد تعریف کنید.
loginUrlAttribute برای تنظیم نام صفحه ای که باید نمایش داده شود در صورتی که کاربر هنوز login نکرده است استفاده میشود و مقدار پیش فرض آن default.aspx است
pathAttribute برای تعیین آدرس ذخیره کوکیهای مربوط به این بخش در کامپیوتر کلاینت به کار میرود و مقدار پیش فرض آن یک backslash است(\)
همچنان ادامه دارد...

omid_Ahmadi
سه شنبه 30 فروردین 1384, 09:26 صبح
در قسمت <credentials> میتوانید برای نوع Forms Authentication یوزرها و پسوردهای معتبر را در برنامه معین کنید(البته اگر آنها را از توی database یا فایلXML مخصوص یا... نمیخوانید).
در این قسمت با استفاده از passwordFormatAttribute میتوانید الگوریتم encrypt کردن passwordها رو مشخص کنید. مقادیر معتبر در این بخش SHA1 و MD5 و Clear است. مقدار ژیش فرض برای این ویژگی SHA1 است.
در داخل credentials میتوانید با استفاده از المنت user نام و کلمه عبور کاربران را همانطور که در بالا ذکر شد معین کنید
پایان.
:موفق:

AspNet
سه شنبه 30 فروردین 1384, 11:44 صبح
مرسی :)

AspNet
سه شنبه 30 فروردین 1384, 11:46 صبح
آیا اگر ما یه برنامه ای نوشته باشیم که در صفحه ی اول یه فرم میاد که از کاربر پسورد میخواد تا به صفحه ی مشخصاتش وارد بشه، ما باید از windows استفاده کنیم یا از Forms ؟

با تشکر

titbasoft
سه شنبه 30 فروردین 1384, 12:21 عصر
windows
زمانی که از account هایی که روی سرور windows شما تعریف شده می خواهید استفاده کنید


Forms
زمانی که کاربر هاتون رو توی فرمهاتون authenticate می کنید. مثلا account اونها از روی یک دیتابیس خونده میشن.

omid_Ahmadi
سه شنبه 30 فروردین 1384, 12:31 عصر
در هر دو حالت استفاده از ویندوز و فرم از کاربر Username و password پرسیده میشود اما هر کدام از اینها کاربرد خاص خودشونو دارند. در وب سایتهایی که افراد میتونند اکانت جدید برای خود تعریف کنند معمولا از فرم استفاده میشه که قابلیت اضافه کردن اکانت از طریق کد رو داره اما اگر از طریق ویندوز بخواهیم تعیین هویت رو انجام بدیم تعداد اکانتها محدود میشه و فقط مدیر سیستم میتونه این کار رو انجام بده و کاربر نمیتونه برای خودش اکانت تعریف کنه.(البته در نوع فرم هم میتوان اطلاعات کاربران را در المنت credentials وارد کرد و به کاربر اجازه ایجاد اکانت جدید را نداد).

ولی برای این کاری که شما میگویید فکر کنم باید از فرم استفاده کنید(اگر از استفاده از NETPassport. چشم پوشی کنیم)

bebakhshid
چهارشنبه 31 فروردین 1384, 21:54 عصر
سلام

یه سوال ذیگه.

من موقع upload در web.config قسمت mode ایراد میگیره مد من remoteonly است

omid_Ahmadi
پنج شنبه 01 اردیبهشت 1384, 07:20 صبح
این المنت یک Attribute به نام mode دریافت میکند که در جلوی آن میتوانید حالت بررسی هویت کاربران خود را تعیین کنید. این Attribute میتواند شامل یکی از مقادیر ذیل شود: Windows,Forms,Passport,None همانطور که از اسم هرکدام مشخص است اولی برای تعیین هویت توسط ویندوز دومی برای تعیین هویت توسط خود برنامه سومی برای تعیین هویت توسط سیستمNET Passport. مایکروسافت و آخری برای اینکه کاربران بدون تعیین هویت شدن از سایت استفاده کنند استفاده میشود.

AspNet
پنج شنبه 01 اردیبهشت 1384, 21:50 عصر
چرا با اینکه از Forms استفاده میکنم اما وقتی آدرس صفحه ی سوم رو که نباید بدون مشاهده ی صفحه ی اول باز بشه رو در addres bar IE می نویسم میاد؟

Behrouz_Rad
پنج شنبه 01 اردیبهشت 1384, 22:56 عصر
چرا با اینکه از Forms استفاده میکنم اما وقتی آدرس صفحه ی سوم رو که نباید بدون مشاهده ی صفحه ی اول باز بشه رو در addres bar IE می نویسم میاد؟
دلیلش اینه که صفحات در Cache کلاینت باقی می مونن.
به شکل زیر مانع از ذخیره صفحات در Cahce کلاینت و همچنین رفتن کاربر به صفحه مورد نظر (مثلا لوگین) بشید:
در فایل ASPX:


<%@ OutputCache Duration="1" VaryByParam="*" %>

در Code Behind:


private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
Response.CacheControl = "no-cache" ;
Response.AddHeader( "Pragma", "no-cache" );
Response.Expires = -1 ;

if(Session["xxx"]==null)
Session["xxx"]=1;
else
Response.Redirect("go_to_default_page.aspx");
}
}

:)

AspNet
پنج شنبه 08 اردیبهشت 1384, 20:19 عصر
آقای محترم میشه بیشتر راجع به این کد که نوشتین توضیح بدین؟
آیا من باید به جای no-cache و Pragma و xxx چیز دیگری بذارم؟ چی باید بذارم؟

Behrouz_Rad
جمعه 09 اردیبهشت 1384, 04:43 صبح
آیا من باید به جای no-cache و Pragma و xxx چیز دیگری بذارم؟ چی باید بذارم؟
خیر. کد فوق بدون هیچگونه تغییری به خوبی جواب میده.
این کد از ذخیره صفحات در Cache کلاینت جلوگیری می کنه.

AspNet
جمعه 09 اردیبهشت 1384, 10:58 صبح
من از این کد که استفاده کردم فقط وقتی که دکمه Back از IE رو میزنم میره به صفحه ای که میخوام.
ولی مشکلی که گفتم برطرف نشد . یعنی وقتی یه صفحه IE جدید رو باز میکنم و آدرس صفحه ای که نمیخوام باز بشه رو بنویسم باز میشه..

اینم فایل web.config:

<authentication mode="Forms">
<forms loginUrl="home.aspx" timeout="1"/>
</authentication>


<authorization>
<allow users="*"/>
</authorization>

AspNet
جمعه 09 اردیبهشت 1384, 12:15 عصر
من فکر میکنم این مشکل من به خاطر اینه که صفحات رفرش شده نیستند . همانطور که گفتین اگه رفرش کنم به صفحه ی لوگین برمیگرده. آیا راهی هست که این مشکل پیش نیاد؟ چون اگر به صفحه ای که رفرش نشده بتونه بره اونوقت به بقیه ی صفحات هم دسترسی میتونه داشته باشه :)

Behrouz_Rad
جمعه 09 اردیبهشت 1384, 17:29 عصر
:strange: :strange: :strange:
عزیز جان با این چیزی که شما نوشتی خوب معلومه که همه می تونن به صفحه شما دسترسی داشته باشن.





<authorization>
<allow users="*"/>
</authorization>


باید بنویسید:


allow users="?"

AspNet
جمعه 09 اردیبهشت 1384, 19:45 عصر
این چیزی که شما نوشتین با این فرق داره؟

deny users="?"

AspNet
جمعه 09 اردیبهشت 1384, 20:10 عصر
من از این کد که استفاده کردم هم هیچ فرقی نکرد


allow users="?"


آخه مشکل من کجاست :(

Behrouz_Rad
جمعه 09 اردیبهشت 1384, 20:25 عصر
allow users="?"

فقط به کاربران شناخته شده (لوگین کرده)، اجازه دسترسی بده.



allow users="*"

به تمامی کاربران، اجازه دسترسی بده.



deny users="?"

به تمامی کاربران ناشناخته (لوگین نکرده)، اجازه دسترسی نده.



deny users="*"

به تمامی کاربران، اجازه دسترسی نده.

هرکسی به اندازه ای می تونه به شما کمک کنه، تلاش و تجربه شما در بسیاری از اوقات به کمک شما میاد.
بسیاری از دوستانی که در اینجا سوال مطرح می کنند، بدون مطالعه قبلی و با داشتن حداقل دانش در مورد ASP.NET سوال می پرسند.
این قصه سر دراز دارد....
ره چند ساله را یک شبه نتوان پیمود..

AspNet
شنبه 10 اردیبهشت 1384, 10:22 صبح
:mrgreen: