PDA

View Full Version : سوال: آيا ميتوان براي وب بيش از يك Athentication تعريف كرد ؟



Afshin160
دوشنبه 14 اردیبهشت 1388, 13:51 عصر
باسلام ...
من در برنامه وبم 3 تا فلدر دارم كه در هر يك يه web.config به صورت زير دارم :
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
و همچنين تعدادي web form .

حال مي خواهم كاربري كه مثلا" به فلدرafshin دسترسي داره به فلدر admin دسترسي نداشته باشه ....:عصبانی++:

در حال حاضر با يه authenticat دارم كار مي كنم و وقتي authenticated= true با تغيير returnurl ميتونم به تمام فلدر ها دسترسي پيدا كنم ....


آيا ميتوان براي وب بيش از يك Athentication تعريف كرد ؟
و اگر نه براي حل اين مشكل چه راه حلي را پيشنهاد ميكنيد . .....

iman_22a
دوشنبه 14 اردیبهشت 1388, 17:49 عصر
یک Web.config واسه کل سایتتون کافیه ، دسترسی به فولدر ها رو می تونین توی همون یکی محدود کنین . مثلا روی فلان فولدر فقط فلان یوزرها مدیریت کنن .

Afshin160
دوشنبه 14 اردیبهشت 1388, 17:53 عصر
سلام ...
دوست عزيز ميوتني بيشتر توضيح بدي ؟

Afshin160
دوشنبه 14 اردیبهشت 1388, 20:08 عصر
سلام...
يعني راهي نيست...!!!؟

iman_22a
دوشنبه 14 اردیبهشت 1388, 21:00 عصر
سلام...
يعني راهي نيست...!!!؟



<location path="ManageUsers.aspx">
<system.web>
<authorization>
<allow roles="admin,cadmin,report,creport"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="ManageMainMenu.aspx">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

به جای صفحات می تونی پوشه هم کنترل کنی . البته نمی دونم راه بهتری هم هست یا نه

Afshin160
سه شنبه 15 اردیبهشت 1388, 11:32 صبح
دوست عزيز سلام ...
من با كد زير Authentication بودن را چك مي كنم ....


protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
//if ((Login1.UserName.ToLower() == "mehdi") && (Login1.Password == "123"))
//{
// e.Authenticated = true;
//}
e.Authenticated = (Login1.UserName.ToLower() == "afshin") && (Login1.Password == "123");
}حال اگر دو فلدر بصورت زير داشته باشم :
1- folder : Example / test1.aspx


2- folder : afshin / afshin1.aspx

و حال از web.config زير در يكي از فلدر ها استفاده ميكنم :


<?xml version="1.0"?>
<configuration>
<!--<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>-->
<location path="test1.aspx">
<system.web>
<authorization>
<allow roles="admin,mehdi,report,creport"/>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="afshin1.aspx">
<system.web>
<authorization>
<allow roles="afshin"/>
<deny users="?"/>
</authorization>
</system.web>
</location>

</configuration>اما وقتي e.Authenticated = true ميشه همجا و در تمام فلدر ها مي تونم برم !!!؟ كه البته فكر مي كنم
اين منطق درستي باشه ... ولي من به هدف نرسيدم ...
هدفم كنترول ورود به فلدر ها بود كه بين user ‌هايي كه e.Authenticated = true ميشه تمايز بگذارم و بتونم ورود آنها به قسمتهاي مختلف را كنترول كنم ....!!!؟

البته من فكر مي كردم قسمت زير

<authorization>
<allow roles="admin,mehdi,report,creport"/>
<deny users="?"/>
</authorization>بخصوص allow roles اين كارو بكنه ...... كه نكرد !!!؟:عصبانی++:

iman_22a
سه شنبه 15 اردیبهشت 1388, 11:54 صبح
توی این روش از Form Authentication استفاده میشه . توی web.config دسترسی به صفحات رو با Role محدود می کنیم . البته این روش برای سایتی مناسبه که چند تا رول مختلف داشته باشه . شما از تک یوزر استفاده می کنین . پس فکر نمی کنم احتیاجی به تنظیم web.config داشته باشین .

iman_22a
سه شنبه 15 اردیبهشت 1388, 12:02 عصر
دوست عزیز ، جمعه آزمون دارم ، سعی می کنم تا جمعه سیستم لاگین پروژه خودمو برات اینجا بذارم . اگر عمری باقی باشه !

behzadnet
سه شنبه 15 اردیبهشت 1388, 18:29 عصر
ببین این به دردت میخوره
دو پوشه به نامهای admin و public که تمام اعضا به پوشه public دسترسی دارند ولی به پوشه admin فقط کاربر admin دسترسی داره.

<location path="admin">
<system.web>
<authorization>
<allow users="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="public">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

Afshin160
سه شنبه 15 اردیبهشت 1388, 19:11 عصر
سلام ...
نه عزيز ...دوسمون هم همين را گفتن ولي وقتي e.Authenticated = true ميشه همجا و در تمام فلدر ها مي تونم برم !!!؟

ولي بازم متشكرم

__H2__
یک شنبه 24 خرداد 1388, 19:09 عصر
سلام
من یک نمونه کد (سمپل) در همین رابطه برای دوستی حاضر کرده بودم که البته به زبان VB.Net است و به نظر خودم خیلی هم ساده است و اگر از IHttpModule استفاده شود بهتر هم میشود ولی ترسیدم پیچیده شود...

امیدوارم کمکتان کند:
لینک ثابت:
http://support.h02.ir/fwlink/?LinkId=1002214567

لینک فعلی:
http://www.h02.ir/Downloads/?familyid=8AFDB9FE-B09F-4835-8F21-2F4E11E018F6

طبیعتاً برای اجرا نیاز به فعال بودن sqlexpress دارید.
در صورت سوال و یا اینکه کدی را نتوانستید به C#.Net تبدیل کنید در همین تاپیک مطرح کنید.

موفق باشید.