PDA

View Full Version : مدیریت نقشها در asp.et



shirin_n
یک شنبه 21 اسفند 1384, 14:25 عصر
سلام
اولا به کی به کی قسم هرچه گشتم جوابمو نگرفتم
ثانیا به کی به کی قسم یه کمی تحویلات بگیرید ما رو
سوال:مدیریت نقشها در asp.net چگونه است.منظورم اینه که چطوری بین بازدید کنندگان مختلف تفاوت قائل شویم.که مدیران به تمام صفحات دسترسی داشته باشند.اما سایر اعضا فقط به یکسری صفحات خاص.در تاپیکهای قبلی که من دیدم همه کاربران شرایط یکسانی داشتند.و همه به یک صفحه لوگین هدایت میشدند و از ان پس به همه صفحات دسترسی داشتند.

keramatiabi
یک شنبه 21 اسفند 1384, 14:36 عصر
<configuration>
<location path="modifyData">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

<location path="Users">
<system.web>
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

hamed_bostan
یک شنبه 21 اسفند 1384, 15:04 عصر
دوست عزیز سلام.
ببینید شما وقتی یک کاربر رو به صفحه login راهنمایی می کنید و طرف login می کنه اگر username و password درست بود شما از توی بانک اطلاعاتی خودت کد کاربر رو در بیار و واسه اش یه session بساز ===>

Session.add("Uid",userid)

بعد داخل هر صفحه ای که میری توی فرم لود یا ... با این دستور کد کاربر رو چک کن ببین دسترسی داره به این صفحه یا نه .
dim i as integer=ctype(session("uid"),integer)

امیدوارم متوجه شده باشید اگر مشکلی بود بفرمایین. ضمنا اگر search کنید بابت این موضوع بحث شده و احتمالا نمونه کد ای خوبی پیدا می کنید

یا حق

shirin_n
چهارشنبه 24 اسفند 1384, 16:56 عصر
<configuration>
<location path="modifyData">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

<location path="Users">
<system.web>
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

مرسی.خیلی حال دادی.اگه این کد رو توضیح بدی که دیگه وری وری تنکیو

shirin_n
چهارشنبه 24 اسفند 1384, 16:58 عصر
دوست عزیز سلام.
ببینید شما وقتی یک کاربر رو به صفحه login راهنمایی می کنید و طرف login می کنه اگر username و password درست بود شما از توی بانک اطلاعاتی خودت کد کاربر رو در بیار و واسه اش یه session بساز ===>

Session.add("Uid",userid)

بعد داخل هر صفحه ای که میری توی فرم لود یا ... با این دستور کد کاربر رو چک کن ببین دسترسی داره به این صفحه یا نه .
dim i as integer=ctype(session("uid"),integer)

امیدوارم متوجه شده باشید اگر مشکلی بود بفرمایین. ضمنا اگر search کنید بابت این موضوع بحث شده و احتمالا نمونه کد ای خوبی پیدا می کنید

یا حق
حامد جون از تو هم وری وری تنکیو

PersianAmir
چهارشنبه 24 اسفند 1384, 17:01 عصر
آقایون و خانومها این قدر الفاظ فارسی به کار نبرید!

من موندم گفتن session چه اشکالی داره که میگید نقش؟

هر چیزی را که نمیشه فارسی کرد!

shirin_n
چهارشنبه 24 اسفند 1384, 22:23 عصر
آقایون و خانومها این قدر الفاظ فارسی به کار نبرید!

من موندم گفتن session چه اشکالی داره که میگید نقش؟

هر چیزی را که نمیشه فارسی کرد!
چه ربطی داره.اگه میشه شما هم به جای این.....به موضوع اصلی بپردازید.مرسی

manager
چهارشنبه 24 اسفند 1384, 23:35 عصر
البته استفاده از Session کار اضافی است و asp.net2 تمام این کارها را برای شما و چه بسا بهتر انجام می ده.

شما می تونید با استفاده از کنترلهای Membership موجود در asp.net2 به راحتی از یک سیستم مدیریت اعضا خوب و ایمن استفاده کنید.

مثلا از کنترل LoginView استفاده کنید تا همان چیزی که می خواستید یعنی قسمت هائی از سایت را برای بعضی ها نمایش بدهید یا ندهید را پیاده سازی کنید..به راحتی چند کلید و یکی و دو خط کد..

البته امیدوارم سوال شما رو جواب داده باشم..

shirin_n
پنج شنبه 25 اسفند 1384, 00:30 صبح
البته استفاده از Session کار اضافی است و asp.net2 تمام این کارها را برای شما و چه بسا بهتر انجام می ده.

شما می تونید با استفاده از کنترلهای Membership موجود در asp.net2 به راحتی از یک سیستم مدیریت اعضا خوب و ایمن استفاده کنید.

مثلا از کنترل LoginView استفاده کنید تا همان چیزی که می خواستید یعنی قسمت هائی از سایت را برای بعضی ها نمایش بدهید یا ندهید را پیاده سازی کنید..به راحتی چند کلید و یکی و دو خط کد..

البته امیدوارم سوال شما رو جواب داده باشم..
این روش خوب وراحتیه.البته امیدوارم که دوستان دیگر نیز توضیحات خود را در مورد روشهایی که گفته بودند .تکمیل نمایند تا در این تاپیک چندین روش را با هم داشته باشیم

hamed_bostan
پنج شنبه 25 اسفند 1384, 08:53 صبح
میشه یه مقدار بیشتر بابتmembership توضیح بدین و چطور میشه از اون استفاده کرد؟

rohollahmahmoodiany
پنج شنبه 25 اسفند 1384, 11:38 صبح
<configuration>
<location path="modifyData">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

<location path="Users">
<system.web>
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

اگه میشه این کد رو توضیح بدبد.
در مورد روش hamed_boston به نظر مییاد به همه کاربران رو به یه چشم نگاه کرده و تفاوتی بین ادمین و... قائل نشده.اما روش membership فقط در asp.net2 قابل استفاده است.

hamed_bostan
پنج شنبه 25 اسفند 1384, 17:43 عصر
در مورد روش hamed_boston به نظر مییاد به همه کاربران رو به یه چشم نگاه کرده و تفاوتی بین ادمین و... قائل نشده.اما روش membership فقط در asp.net2 قابل استفاده است.

استفاده از session همه رو به یک چشم نمی بینه بلکه شما id شخص رو داخل session داری و بعد چک می کنی ببینی role اون چیه و در تمام صفحات هم به id دسترسی داری

rohollahmahmoodiany
پنج شنبه 25 اسفند 1384, 23:37 عصر
استفاده از session همه رو به یک چشم نمی بینه بلکه شما id شخص رو داخل session داری و بعد چک می کنی ببینی role اون چیه و در تمام صفحات هم به id دسترسی داری
کاملا درسته.ممنون
منتظر توضیح keramatiab در مورد کدی که ارائه کرده هستیم.

manager
جمعه 26 اسفند 1384, 00:43 صبح
<location path="modifyData">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

<location path="Users">
<system.web>
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>


توضیح مختصر کدهای بالا :

معمولا هنگامی که می خواهید تنظیماتی را به فایل یا فولدر خاصی اعمال کنید از تگ location استفاده می کنید. داخل این تگ از تگی به نام authorization استفاده شده است این تگ عمل اجازه دهی به کاربران را انجام می دهد. در کد فوق authorization اول به این معنی است که تمام کاربران نا شناس اجازه دسترسی به قسمتی که location به آن اشاره می کند را ندارند.
در location دومی دوباره از تگ authorization استفاده شده است به این معنا که فقط کاربری با نام کاربری admin اجازه دسترسی به این قسمت رادارد و هیچ کاربر دیگری اجازه دسترسی به این قسمت را ندارد.
در تگ های allow و deny می توان از خصلت roles نیز استفاده کرد که بدین ترتیب گروهی از کاربران که جزء یک role هستند اجازه دسترسی به این قسمت را خواهند داشت.

نمی دونم منظورتون از توضیح چی بود ولی من کدشو توضیح دادم چون تاپیک های قبلی رو به دقت نخوندم امیدوارم ببخشید... :

اطلاعات بیشتر راجع به مدیریت اعضا توسط asp.net 2 :
http://www.sitepoint.com/article/asp-net-2-security/2

rohollahmahmoodiany
جمعه 26 اسفند 1384, 02:14 صبح
توضیح مختصر کدهای بالا :

معمولا هنگامی که می خواهید تنظیماتی را به فایل یا فولدر خاصی اعمال کنید از تگ location استفاده می کنید. داخل این تگ از تگی به نام authorization استفاده شده است این تگ عمل اجازه دهی به کاربران را انجام می دهد. در کد فوق authorization اول به این معنی است که تمام کاربران نا شناس اجازه دسترسی به قسمتی که location به آن اشاره می کند را ندارند.
در location دومی دوباره از تگ authorization استفاده شده است به این معنا که فقط کاربری با نام کاربری admin اجازه دسترسی به این قسمت رادارد و هیچ کاربر دیگری اجازه دسترسی به این قسمت را ندارد.
در تگ های allow و deny می توان از خصلت roles نیز استفاده کرد که بدین ترتیب گروهی از کاربران که جزء یک role هستند اجازه دسترسی به این قسمت را خواهند داشت.

نمی دونم منظورتون از توضیح چی بود ولی من کدشو توضیح دادم چون تاپیک های قبلی رو به دقت نخوندم امیدوارم ببخشید... :

اطلاعات بیشتر راجع به مدیریت اعضا توسط asp.net 2 :
http://www.sitepoint.com/article/asp-net-2-security/2
توضیح کاملی بود ممنون.

mehrdad_t
جمعه 01 تیر 1386, 18:04 عصر
در Asp.net 2 برای دادن یا ندادن اجازه دسترسی به صفحه ای خاص به Role ای خاص , حتمآ باید یک پوشه ساخت تا به آن پوشه اجازه دسترسی ارائه شود.

http://teanet.somee.com/photo/Access%20role.JPG

برای استفاده از این امکان برای صفحات چه باید کرد ؟

majid_afra222
جمعه 01 تیر 1386, 19:20 عصر
در Asp.net 2 برای دادن یا ندادن اجازه دسترسی به صفحه ای خاص به Role ای خاص , حتمآ باید یک پوشه ساخت تا به آن پوشه اجازه دسترسی ارائه شود.

برای استفاده از این امکان برای صفحات چه باید کرد ؟
سلام
در Path آدرس صفحه رو وارد کنید :


<location path="SiteAdmin.aspx">
<system.web>
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

hamid58
شنبه 02 تیر 1386, 01:13 صبح
آقایون و خانومها این قدر الفاظ فارسی به کار نبرید!

من موندم گفتن session چه اشکالی داره که میگید نقش؟

هر چیزی را که نمیشه فارسی کرد!


اون چیزی که سوال شده در واقع Role هستش در Membership !!!

session فارسیش میشه جلسه کاری نه نقش !

hamid58
شنبه 02 تیر 1386, 01:22 صبح
یک کتاب به نام Professional ASP.NET 2.0 Security, Membership, and Role Management
هست که به دردتون میخوره .

میتونید pdf اون رو از سایت http://www.persiadevelopers.com بگیرید ...

mehrdad_t
شنبه 02 تیر 1386, 12:42 عصر
یک کتاب به نام Professional ASP.NET 2.0 Security, Membership, and Role Management
هست که به دردتون میخوره .

میتونید pdf اون رو از سایت http://www.persiadevelopers.com بگیرید ...

اگر دنبال کتاب خوب در این مورد می گردید , اصلآ این کتابها خوب نیستند .

شما این کتاب رو ببینید , متوجه صحبتم می شوید .
Wrox Professional ASP.NET 2 0 Server Control and Component Development Aug 2006

جالبه که نویسندش یک ایرانی هست !
Dr. Shahram Khosravi

از فصل 20 تا 24 در این مورد نوشته شده .

hamed_bostan
شنبه 02 تیر 1386, 16:52 عصر
دوست عزیز شما در این قسمت می خوای از forms authentication استفاده کنی یه search بکنخیلی چیزا پیدا می کنی .
فقط من یه چیزی در مورد location بگم و اون اینکه شما می تونید داخل هر کدوم از folder هات یه web.config بندازی و خصوصیاتش و دسترسی هاشو تنظیک کنی ولی بعصی وقتا طبق تحربه host فایل web.config داخل شاخع هخا رو شناسای نمی کنه و مجبوری از هاصیت location استفاده منی
یا حق

federrer
یک شنبه 24 تیر 1386, 00:38 صبح
من یه صفحه دارم که قبل از ورود به اون یه صفحه Login گذاشتم. یعنی کاربر هایی که Username و Password درست بدن می تونن وارد شن .

یه پوشه ساختم و صفحه مورد نظر و صفحه Login و web.config رو ریختم توش.

این کد صفحه web.config:



<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings><add key="myConnectionString" value="server=localhost;uid=***;pwd=***;database=***" /></appSettings>
<location path="MyFolder">
<system.web>
<compilation defaultLanguage="c#" debug="true" />
<customErrors mode="RemoteOnly" />
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>
<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

<sessionState mode = "SqlServer" stateConnectionString="tcpip=127.0.0.1:45565" sqlConnectionString="data source="SERVERNAME;user id=sa;password='' cookiesless="false" timeout="20"
/>
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="fa-IR" uiCulture="fa-IR" />

</system.web>
</location>
</configuration>




تو صفحه login هم موارد زیر رو وارد کردم :



using System.Configuration;
string connectionString = (string )ConfigurationSettings.AppSettings["myConnectionString"];



1- تو Web.config مشکلی برای اتصال به دیتا بیس SQL server ندارم ؟؟

2- حالا وقتی می خوام صفحه Login رو Submit کنم باید مقادیر وارد شده برای Username و Pasword رو خودم چک کنم ؟؟؟ ( با IF)


من از VS 2003 استفاده می کنم و صفحه Login رو دستی ( با Text Box) طراحی کردم. ( تو VS 2005 دیدم که تو ToolBOX یه منو به اسم Login هست که میشه راحت از Object هاش استفاده کرد )