PDA

View Full Version : سوال: استفاده از membership



mehrdad85
دوشنبه 29 فروردین 1390, 09:45 صبح
سلام
چندتا سوال داشتم ممنون میشم کمکم کنین
1) برای استفاده از membership باید از چه فضا نامی استفاده کنیم؟
2) برای استفاده از کنترل های آماده ای که خود asp داره نیز باید کد بنویسسم؟چون من search که میکردم به یه سری موارد برخورد کردم که نمونه کد های #c بود که دستی نوشته شده بود
3) برای اینکه به نوعی از Session استفاده نکنیم یا اینکه کاربری که در حال کار کردن هست را تشخیص بدیم و داخل صفحات بر حسب id یه سری اعمال انجام بشه باید چکار کنیم؟
(مثلا من میخام بر حسب اینکه که کاربر چه role ای براش تعریف شده بتونه به زمان query زدن به یه سری اطلاعات خاص دسترسی داشته باشه
بذارید واضحتر بیان کنم مثلا مدیر فروم میتونه کلیه تاپیک های همه تالارها را مشاهده کنه ولی مدیر تالار x فقط میتونه تاپیک های تالار x را مشاهده کنه
برای پیاده سازی همچین حالتی چکار باید بکنم؟از چی باید کمک بگیرم و چه روشی را پیشنهاد میکنید؟آیا نمونه ای دارید که برام بذارید؟
4) هنگام استفاده از create user در کنترل های خود asp چطور میشه فاکتور های دیگه هم بهش اضافه کرد؟مثلا علاوه بر username ,password,email میخام "کد ملی" و "آدرس" و "نام" و "نام خانوادگی" هم اضافه بشه برای این کار میشه راهنمایی کنید چکاری باید انجام بدم؟
برای اینکه هنگام log in کردن از جدولی که در db ای که خودم ساختم باشه استفاده کنه باید چکار کنم؟

از همه دوستان و مدیران تالار هم عذر خوهی میکنم چون همه سوالا در مورد membership بود همه را با هم مطرح کردم
اگر موردی داره دوستان اعلام کنن اصلاح میکنم

مرسسسی

Roia_del
دوشنبه 29 فروردین 1390, 13:24 عصر
سلام .

شما چند تا سوال اولش پرسیدین بعدش زدین زیر همه چی :متفکر:

سوال هایی که پرسیدین با شماره سوال پاسخ دادم که مطالب طولانی نشه .

1) System.Web.Security
2) خیر ولی در مواقع ضروری می توانید کد هم بنویسید . گفتنی است که شما می توانید بدون یک خط کد از کنترل login خود Asp.net استفاده کنی.
3)ID کاربر رو می تونی این طوری دربیاری :



Dim currentUser As MembershipUser

Public Sub Page_Load()
currentUser = Membership.GetUser()

currentUser.UserName
End Sub



برای اینکه بدونی کدوم کاربر تو چه نقشی هست می تونی Role های کاربر رو بدست بیاری :



Dim rolesArray() As String

Public Sub Page_Load()
RolesArray = Roles.GetRolesForUser()
'نقش های کاربری که login کرده تو آرایه رشته ای ذخیره میشه


4) برای اینکار(نام و نام خانوادگی و ... ) شما باید از Profile ها استفاده کنی. سراغ کلاس ProfileCommon هم بری خوبه.

و در آخر گفتین که می خواین از جداول خودتون استفاده کنین که (اومدی نسازی ) اون موقع باید برای خودت Membership Provider , Role Provider , Profile Provider بنویسی و به سایت codeProject مراجعه کنی.


پاسخ بنده فقط راه حلی بود جهت انجام کار که خودم انجام دادم..

MJ_PC88
دوشنبه 29 فروردین 1390, 14:21 عصر
1) برای استفاده از membership باید از چه فضا نامی استفاده کنیم؟
using System.Web.Security;
2)برای استفاده از کنترل های آماده ای که خود asp داره نیز باید کد بنویسسم؟
این مسئله بسته به کاری که میخوای بکنی داره، برای استفاده های اولیه نیازی به کدنویسی نیست
3)
برای اینکار میتونی userجاری رو بخونی، یعنی
MembershipUser user =Membership.GetUser(Page.User.Identity.Name);
یا
HttpContext.Current.User.Identity.Name
برای تشخیص role کاربر هم میتونی از Roles.IsUserInRole(UserName,RoleName) استفاده کنی
4) برای اینکار باید یک جدول Profile در دیتابیس خودت با کلید اصلی username بسازی و موقعی که داری createuser رو انجام میدی، اطلاعات کاربر رو از طریق یک سری تکست باکس به همراه اون نام کاربری در جدول خودت هم بریزی،در واقع نام کاربریت کلید خارجی از کلید اصلی موجود در جدول membership شماست

mehrdad85
دوشنبه 29 فروردین 1390, 14:38 عصر
سلام
بابت راهنمایی های خوبت یک دنیا ممنون
شیوا و عامیانه و در عین حال دقیق و فنی

مرسی
فقط اگه لطف کنی و یه سوال دیگه هم جواب بدی ممنونت میشم
اول اینکه آیا sample یا نمونه ای داری که مثلا چندتا فیلد غیر از username, password , email اضافه شده باشه؟
و دوم اینکه فرض کنیم این فیلد ها را اضافه کردیم واسه دسترسی به اونا باید مثل دسترسی به فیلد های دیگه عمل کنیم؟

mehrdad85
سه شنبه 30 فروردین 1390, 09:04 صبح
1)
برای اینکار میتونی userجاری رو بخونی، یعنی
MembershipUser user =Membership.GetUser(Page.User.Identity.Name);
یا
HttpContext.Current.User.Identity.Name


دوست عزیز این کدی که شما گذاشتید کاربر فعال هر صفحه را نشون میده نه؟
یه سوال !!!
این کد از نظر عملکردی چه فرقی با این داره؟

currentUser = Membership.GetUser()



4) برای اینکار باید یک جدول Profile در دیتابیس خودت با کلید اصلی username بسازی و موقعی که داری createuser رو انجام میدی، اطلاعات کاربر رو از طریق یک سری تکست باکس به همراه اون نام کاربری در جدول خودت هم بریزی،در واقع نام کاربریت کلید خارجی از کلید اصلی موجود در جدول membership شماست
سلام
میشه یکم بیشتر توضیح بدید؟
اصلا چطوری میتونم ارتباط برقرار کنم بین دیتابیس خودم و دیتابیسی که برای membership ساخته شده ؟ من جستجو کردم به مواردی برخوردم که پیشنهاد میدادن که اصلا کاری کنم که membership از دیتابیس خودم استفاده کنه اما واقعیت نتونستم این تنظیماتو انجام بدم وجواب نداد
میشه شما یکم راهنمایی بفرمایید؟


سپاسگذارم

Roia_del
سه شنبه 30 فروردین 1390, 10:47 صبح
دوست عزیز این کدی که شما گذاشتید کاربر فعال هر صفحه را نشون میده نه؟MembershipUser user =Membership.GetUser(Page.User.Identity.Name);
یه سوال !!!
این کد از نظر عملکردی چه فرقی با این داره؟
currentUser = Membership.GetUser()


تو کد دوم هر کاربری که login کرده مشخص میشه ولی تو اولی هر نام کاربری بدی اطلاعاتش رو می تونی بدست بیاری.


در رابطه با سوال دومتون بنده پیشنهاد دادم به سایت CodeProject مراجه کنید : http://www.codeproject.com/KB/aspnet/CustomMembershipProviders.aspx
http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

p24rsh
سه شنبه 30 فروردین 1390, 23:46 عصر
سلام من هم یه مشکل دارم که فکر می کنم به اینجا ربط دارهمن win2003serverنصب دارم از ابزار لوگین vs2008استفاده کردم اما همیشه و به طور پیش فرض لوگین است از ابزارLoginViewاستفاده کردم که ببینم با چه نامی لوگین شده نام سیستم خودم به این صورت RJP23\Administrato نمایش میده و ضمنا Logout هم نمیشه اما قبل که روی وین xpانجام می دادم صحیح کار می کرد به نظر شما مشکلش چیه یه سوال دیگه میخوام بعد از ورود لوگین پنهان بشه را صحیحش چیه ممنون

Roia_del
چهارشنبه 31 فروردین 1390, 08:53 صبح
شما باید نوع Login رو در Web.Config از Windows به Forms تغییر دهید. در اینصورت باید نام کاربری و پسورد کاربر رو وارد کنید(کاربری که در جدول ذخیره شده ، نه کاربرهای Domain در ویندوز).

به جای (اگر بود)



<authentication mode="Windows" />



کد زیر را وارد کنید و اگر کد بالا در Web.Config نبود کد زیر را اضافه کنید.


<authentication mode="Forms" />

p24rsh
چهارشنبه 31 فروردین 1390, 11:28 صبح
سلام اول تشکر و ممنون بعد 2 سوال 1- راه صحیح پنهان کردن لوگین بعد از ورود کاربر چیه .لوگین من داخل یه tdمیخوام بعد از ورود پنهان بشه به جای اون یع عکس پشت اون نشان داده بشه 2-حالا چطور داخل td میشه پشت زمینه گذاشت

mehrdad85
چهارشنبه 31 فروردین 1390, 12:52 عصر
سلام
شما میتونی برای این کار از css استفاده کنی
اول اینکه یه فایل stylesheet داخل پروژه بساز
داخل اون یه کلاس تعریف کن
مثلا این فرمی

.bg{
background_image : address
}

حالا class اون td را برابر bg قرار بده

موفق باشید

p24rsh
چهارشنبه 31 فروردین 1390, 16:03 عصر
ممنون عالی بود حالا برای پنهان شدن لوگین بعد از ورود چکار کنم قبلا این کار رو انجام دادم حال یادم نیست یه چیزی شبیه این if (*******=true{login.visable=fals}

p24rsh
جمعه 02 اردیبهشت 1390, 02:07 صبح
سلام من برای مقدار کلاس td اون کلاسی را که در فایل css تعریف کردم را گذاشتم اما نشد ممکن فرمت عکسی رو که می خوام برای پشت زمینه استفاده کنم خاص باشه یا روی یه مرور گر خاص عمل کنه؟

mehrdad85
شنبه 03 اردیبهشت 1390, 09:55 صبح
سلام
بعید میدونم مشکل از فرمت باشه
با یان حال برای این که مطمئن بشی مشکل از اون نیست میتونی یه عکس با یه فرمت دیگه امتحان کنی
دوست عزیز دقیقا از کدی که برات گذاشتم استفاده کردی؟
راستی !!
فهمیدم مشکل از کجاس؟
فایل css که درست کردی را به صفحه اضافه کردی؟
برای این کار کافیه که از solution explorer فایل cc را drag and drug کنی و بندازی و بعد از تگ title صفحه ای داخل اون td داری.
موفق باشی

p24rsh
سه شنبه 06 اردیبهشت 1390, 11:58 صبح
سلام ممنون باور کن خودم هم تعجب میکنم چرا نمیشه تکه کد من به این شکل.bg{ background-image: C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\ElahiName\ElahiName\Tasvir_ha\janb.j pgit; background-repeat: repeat;}