PDA

View Full Version : اجازه ندادن به باز شدن صفحه



mononok
پنج شنبه 23 مهر 1388, 11:40 صبح
سلام

من در سايتم كه با asp.net تحت vb نوشتم صفحاتي دارم كه براي وارد شدن به بعضي از اون ها كاربر بايد login كنه ولي اگه كاربر در قسمت آدرس بار مرورگر خودش اسم هر كدوم از صفحات رو بده اوون صفحه راحت باز مي شه و login ديگه مفهومي نداره
من بايد چيكار كنم تا از طريق آدرس بار نشه به صفحات بره به جز صفحه هايي كه بدون login هم ميشه اوونارو ديد
يعني يه سري صفحات رو با تايپ اسم در آدرس بار بشه ديد و يه سري رو نشه ديد و بايد login كنه
لطفا راهنماييم كنيد:لبخندساده:

z_bluestar
پنج شنبه 23 مهر 1388, 12:24 عصر
یک folder در Root پروژه تون اضـافه کنید و این صفحات رو به اون اضافه کنید و یک Config فایل هم به این Folder اضافه کنید

<authorization>
<deny users="?" />
</authorization>

بعد در فایل اصلی Web.Config پروژه تون هم تنظیمات authentication رو انجام بدید

mononok
پنج شنبه 23 مهر 1388, 13:18 عصر
یک folder در Root پروژه تون اضـافه کنید و این صفحات رو به اون اضافه کنید و یک Config فایل هم به این Folder اضافه کنید


<authorization>
<deny users="?" />
</authorization>

بعد در فایل اصلی Web.Config پروژه تون هم تنظیمات authentication رو انجام بدید
z_bluestar عزيز ممكنه كمي بيشتر توضيح بدين منظورتون اينه كه من يه سري از صفحاتم رو در يه پوشه بذارم و يه سري ديگه رو در يه پوشه ي ديگه؟ كه هر دو web config خودشون رو دارن و درweb config پوشه اي كه شامل صفحاتي هست كه نمي خوام ديده بشه كد بالا رو بذارم؟ وچه تنظيماتي رو بايد در web config اصليم بذارم؟
لطفا كمي بيشتر توضيح بدين

sahele_sheni
پنج شنبه 23 مهر 1388, 13:40 عصر
روشی که دوست عزیزمون گفتن درسته .....

من این کار رو میکنم .... فایلهایی که نیاز به لوگین دارن رو میزارم توی یه پوشه دیگه (مثلا manage) ....و این کدها رو به webconfig اضافه میکنم !!!!



<location path="manage">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>

این کد یعنی پوشه manage نیاز به لوگین کردن داره .....



<authentication mode="Forms">
<forms loginUrl="manage/Login.aspx"
protection="All"
timeout="30"
name=".ASPXAUTH"
path="/"
/>

</authentication>

و این کد هم صفحه لوگین رو مشخص میکنه . حالا هر کس بخواد به صفحاتی که توی این پوشه هست دسترسی داشته باشه بلافاصله به صفحه لوگینی که شما مشخص کردی فرستاده میشه .
این مقاله (http://msdn.microsoft.com/en-us/library/aa480476.aspx) رو هم یه نگاهی بنداز .
موفق باشید .

hamed2661
جمعه 20 فروردین 1389, 10:21 صبح
من با جستجو به این تاپیک اومدم همه کارائیو که گفتین انجام دادم ولی با این ارور روبرو میشم:




Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.


راه حل؟

General-Xenon
جمعه 20 فروردین 1389, 11:36 صبح
سلام....
برای قفل کردن، هر پوشه نیاز به WEB Config داره. اما این کد برای تعریف دسترسی در کانفیگ استفاده می شه...

hamed2661
جمعه 20 فروردین 1389, 11:59 صبح
سلام برادر زنون عزیز... ممنون از زحمتی که کشیدین و جوابتون....
من این کارو کردم صفحاتی که توسط یوزرهای تائید شده باید دیده بشن رو توی یه پوشه گذاشتم به web.config توی اون پوشه این کدا رو اضافه کردم:


<authentication mode="Forms">
<forms name="MyAppCookie" loginUrl="login.aspx" protection="All" timeout="30" defaultUrl="default.aspx">
<credentials passwordFormat="Clear">
</credentials>
</forms>
</authentication>
<authorization>
<deny users="*"/>
</authorization>

توی web.config ریشه هم این کدا رو:


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

اشتباهه؟؟

z_bluestar
جمعه 20 فروردین 1389, 12:36 عصر
سلام برادر زنون عزیز... ممنون از زحمتی که کشیدین و جوابتون....
من این کارو کردم صفحاتی که توسط یوزرهای تائید شده باید دیده بشن رو توی یه پوشه گذاشتم به web.config توی اون پوشه این کدا رو اضافه کردم:


<authentication mode="Forms">
<forms name="MyAppCookie" loginUrl="login.aspx" protection="All" timeout="30" defaultUrl="default.aspx">
<credentials passwordFormat="Clear">
</credentials>
</forms>
</authentication>
<authorization>
<deny users="*"/>
</authorization>توی web.config ریشه هم این کدا رو:


<authorization>
<allow users="*"/>
</authorization>اشتباهه؟؟

دوست عزیز شمـا جابجـا انجام داده اید . تک Authorization رو به Web config Folder اضـافه کنید و اون یکی رو به Web Config روت اضافه کنید

hamed2661
جمعه 20 فروردین 1389, 14:41 عصر
z_bluestar عزیز ممنون از توجهتون ولی:
منطقا نباید همینجور باشه؟ میخوایم همه صفحات روت رو ببینن پس "*"=allow user وچون نمیخوایم هر کسی هر کسی صفحات داخل پوشه رو ببینن (بدون Authentication) بنابر این ... "?" = Deny User .... نه؟

Peyman.Gh
جمعه 20 فروردین 1389, 15:28 عصر
از Web Site Administration Tool استفاده کردید ؟!

hamed2661
جمعه 20 فروردین 1389, 15:40 عصر
از Web Site Administration Tool استفاده کردید ؟!

نه با توجه به اون تاپیک معروف سیستم احراز هویت ساده با اکسس که توی اغلب فرومها هست این کارو کردم البته بانکشو تو SQL ساختم نه اکسس که اثری تو این موضوع نداره. تا وقتی یک فایل WEB.CONFIG هست مشکلی نیست. وقتی دو تا شدن این ارور رو میده تو فرومهای خارجی هم راه حلهای قابل اجرایی ندیدم نزدیکترینشون میگفت ساب فولدر یاید به عنوان VIRTUAL DIRECTORY باید معرفی بشه. مگه ساب فولدر تابع فولدر اصلی که IIS بعنوان VIRTUAL DIRECTORY رجیستر شده نیست؟؟

Peyman.Gh
جمعه 20 فروردین 1389, 15:44 عصر
چرا از Web Site Administration Tool استفاده نکردید ؟!
همه چی در آن در نظر گرفته شده است.

z_bluestar
جمعه 20 فروردین 1389, 15:56 عصر
منطقا نباید همینجور باشه؟

چرا ؟؟؟
من همیشه از این روش برای پروژه هــا استفاده می کنم . و روشی هست که تو همه کتاب ها و منابع علمی بهش اشـاره شده .

کجاش اشکـال داره ؟

hamed2661
جمعه 20 فروردین 1389, 15:56 عصر
بخاطر اینکه میخواستم گرفتار اون دیتابیس دومی که میسازه نشم چون هاست پشتیبانی نمیکنه از اون دیتابیس.... چی بود اسمش...؟ ASPNET....

Peyman.Gh
جمعه 20 فروردین 1389, 16:01 عصر
ASPNETDB.MDF ؟!

فکر نکنم مشکلی داشته باشه :متفکر:

z_bluestar
جمعه 20 فروردین 1389, 16:02 عصر
خوب می تونید استفاده نکنید و Login رو خودتون مدیریت کنید.
و این تگ ها اصلا ربطی به Database ندارن

hamed2661
جمعه 20 فروردین 1389, 16:16 عصر
خوب می تونید استفاده نکنید و Login رو خودتون مدیریت کنید.
و این تگ ها اصلا ربطی به Database ندارن

پس اطلاعاتشو کجا ذخیره میکنه؟ ندیدم ویزاردش جایی واسه انتخاب دیتابیس داشته باشه.

z_bluestar
جمعه 20 فروردین 1389, 16:28 عصر
شمــا DataBase خودتو داری و هنگـــام Login چک می کنی می بینی آیا کـاربر معتبر هست یا نه ؟؟؟
اگه بود تنها کـاری که لازم بکنی اینه :
FormsAuthentication.SetAuthCookie(txtLUsername.Tex t, chkRemember.Checked);

Username و یه مقدار boolean که آیا این کـاربر رو بخـاطر بسپار یا نه ؟؟

hamed2661
جمعه 20 فروردین 1389, 17:18 عصر
شمــا DataBase خودتو داری و هنگـــام Login چک می کنی می بینی آیا کـاربر معتبر هست یا نه ؟؟؟
اگه بود تنها کـاری که لازم بکنی اینه :
FormsAuthentication.SetAuthCookie(txtLUsername.Tex t, chkRemember.Checked);

Username و یه مقدار boolean که آیا این کـاربر رو بخـاطر بسپار یا نه ؟؟

الانم همین کارو میکنم web.config مشکل ایجاد میکنه

z_bluestar
جمعه 20 فروردین 1389, 17:37 عصر
web.config ریشه سایت رو به این صورت تنظیم کنید

<authentication mode="Forms">
<forms name=".abcAuthentication" loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx" slidingExpiration="true" timeout="43200">
</forms>
</authentication>

hamed2661
جمعه 20 فروردین 1389, 18:00 عصر
کدوم وب کانفیگو؟ مال روت یا اون که تو پوشه است؟ اگه از ویزارد استفاده کنم و تیبلهای اون فایل ASPNETDB.MDF ببرم تو دیتابیس خودم کجا رو باید اصلاح کنم که بیخیال اون فایل بشه و تیبلاشو از توی دیتابیس خودم بخونه؟ کانکشن استرینگ خاصی ندیدم که به اون فایل اشاره کنه.

z_bluestar
جمعه 20 فروردین 1389, 18:03 عصر
به روت سایت اضـافه کنید و اگه می خواهید از DataBase خودتون استفاده کنید ، نمی تونید از Wizard ها استفاده کنید . و باید صفحه login رو خودتون بسازید.

hamed2661
جمعه 20 فروردین 1389, 18:08 عصر
ضمنا اگه از همون روش تصدیق هویت ساده و اولیه استفاده کنم مشکلی پیش نمیاد فقط وقتی فایلها رو دسته بندی میکنم و اونائیو که قراره کاربرای مجاز ببینن به همراه وب کانفیگشون جدا میکنم اون ارور رو میده که اگه نده مشکل حله. تمام فرمایشات شما رو هم قبلا رعایت کرده بودم (با اختلافات جزئی مثلا در Time Out) و بی ایراد کار انجام میشد.

z_bluestar
جمعه 20 فروردین 1389, 18:36 عصر
چه errore میده ؟؟!!
بذارید ببینیم ، تا بتونیم بهتر کمک کنیم

hamed2661
جمعه 20 فروردین 1389, 19:44 عصر
چه errore میده ؟؟!!
بذارید ببینیم ، تا بتونیم بهتر کمک کنیم

گذاشتم که... تو صفحه اول پست 5



Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

Peyman.Gh
جمعه 20 فروردین 1389, 19:47 عصر
بیا از Web Site Administration Tool استفاده کن انقدر به خودت زحمت نده :لبخند:
اکثر سرور ها هم پشتیبانی میکنند.

hamed2661
شنبه 21 فروردین 1389, 00:02 صبح
خب عزیز مشکل همینه که هاست از دو تا دیتابیس پشتیبانی نمیکنه. (با توجه به پلنی که سفارش دهنده کار خریداری کرده)

Rejnev
شنبه 21 فروردین 1389, 00:39 صبح
معذرت میخوام که وسط حرف میپرم
من وب خیلی کم کار کردم...
مگه نمیشه با session این کارها رو انجام داد!؟
مثلا اگه کاربر صفحه خاصی رو زد در رویداد لود صفحه بررسی میکنیم که اگه سشن ایجاد شده مربوط به مثلا کاربر با سطح دسترسی ادمین نیست یا اصلا سشنی در کار نیست به login ریدایرکتش کنیم؟

hamed2661
شنبه 21 فروردین 1389, 01:00 صبح
سلام محمد جان
همه این کارارو با سشن میشه انجام داد ولی بحث مربوط به قبل از مقدار دهی مقادیر سشنه وقتی کاربر لاگین کرد و هویتش احراز و تائید شد و سطح دسترسیش مشخص شد میشه اینارو توی متغیرهای سشن ذخیره کرد که بعدا مورد استفاده قرار بگیرن که البته اگه لازم بود(این مقادیر در متغیرهای تعریف شده سشن ذخیره نشده باشن) میشه کاربر رو به صفحه لاگین ریدایرکت کنیم تا تصدیق هویت انجام بشه و اطلاعات لازم گرفته بشه.

Rejnev
شنبه 21 فروردین 1389, 01:11 صبح
سلام
من خوب متوجه جوابتون نشدم.
رویداد فرم لود همیشه قبل از اینکه صفحه ای(یا اطلاعاتی) به سمت کلاینت ارسال بشه فراخونی میشه دیگه.
توی فرم لود میگیم اگه سشنی از متقاضی اون صفحه در کار نبود منتقل شو به لاگین:متفکر:...

hamed2661
شنبه 21 فروردین 1389, 01:33 صبح
توی فرم لود میگیم اگه سشنی از متقاضی اون صفحه در کار نبود منتقل شو به لاگین:متفکر:...

خب منم همینو گفتم دیگه ( یا برعکس!).... منتها هم در کار بودشو گفتم هم نبودشو!! حالا مشکل چیه؟

Rejnev
شنبه 21 فروردین 1389, 02:02 صبح
پس چه نیازی به ساخت folder و root و قفل و... هست؟
این موارد چه کار میکنند، وقتی که با سشن میشه انجامش داد؟!

z_bluestar
شنبه 21 فروردین 1389, 08:48 صبح
خوب یک سری کلاس ها در Asp.net برای اهراز هویت وجود داره که کـار رو راحتر میکنه .

بله میشه از Session هم استفاده کرد ولی شما موقعیتی رو دز نظر بگیرید که 20,30 تا page دارید برای دیدن آنهــا باید کـاربر حتمـا Login باشه . انوقت در Page_Load هر page باید این کد هـا را قرار بدی ولی با این روش همه رو در Folder قرار میدی و نیازی به این همه کد نویسی هم نداری.

hamed2661
شنبه 21 فروردین 1389, 11:01 صبح
خوب یک سری کلاس ها در ASP.NET برای اهراز هویت وجود داره که کـار رو راحتر میکنه .


آبجي (با توجه به آواتورتون درست ميگم؟ خانم هستين؟ اگه نه كه... داداش ببخشيد.!) در مورد اون ارور چيزي دست گيرتون نشد؟ توي يكي از پروژه ها ( با اسم MY PROJECT تو همين برنامه نويس آپ شده بود) يكي از بچه ها همين كارو كرده بود بدون ارور... نميدونم چيو ست كرده بود... ببينم پيداش ميكنم دوباره ...

z_bluestar
شنبه 21 فروردین 1389, 11:30 صبح
:متفکر: ؟؟؟ تا حالا با همچين Error بر نخوردم ؟؟!!!!

General-Xenon
شنبه 21 فروردین 1389, 11:56 صبح
سلام بر همه.....

آقا...Session که اگر بدی اونوقت راه رو برای هکرا راحت تر میکنی که.....وقتی میشه با 2 تا دستور این کاره انجام داد دیگه چرا می پیچونید....بهترین راه، راهی بود که خانوم z_bluestar (http://barnamenevis.org/forum/member.php?u=24515) گفته بودن...



اینم سورس...