نمایش نتایج 1 تا 23 از 23

نام تاپیک: تعیین سطوح دسترسی کاربران ؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    تعیین سطوح دسترسی کاربران ؟

    سلام

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

    میشه راهنمایی کنید ؟

  2. #2
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    منظورت روی جنگو هست؟!
    اگه آره جنگو به صورت پیش فرض سه تا پرمیشن واسه ساخت،ادیت و پاک کردن برای هر کلاس مدلتون در اختیار شما قرار میده که توی کلاس Permission ذخیره میشه.

    from django.contrib.auth.models import Permission
    Permission.objects.all()

    میتونید کلیه پرمیشن هارو با دستور بالا ببینید.
    اگه پرمیشنهای بالا کارتون رو راه نمیندازه باید پرمیشنهای مورد نظر خودتون رو ایجاد کنید.. پرمیشنهای جنگو رو باید با یکی از مدلهاتون ارتباط بدید به صورت مثال:
    class CustomUser(AbstractUser):
    pass
    class Meta:
    permissions = (
    ('perm1', 'detail about perm'),
    ('perm2', 'detail about perm'),

    )

    من معمولا ارتباطش میدم با مدل user اما شما میتونید به هر مدل دیگه ای هم اضافه کنید.
    راه دیگش هم درج مستقیم در مدل Permission هست:

    from django.contrib.auth.models import Permission
    from django.contrib.contenttypes.models import ContentType
    from yourmodel.models import model_name
    content_type = ContentType.objects.get_for_model(model_name)
    permission = Permission.objects.create(codename='permission_nam e',
    name='permissio_description',
    content_type=content_type)


    در انتها میتونید پرمیشنها را ابتدا به یک گروه اختصاص بدید و بعد گروه رو به یوزرتون اضافه کنید یا پرمیشنها رو به صورت مستقیم به یوزر اختصاص بدید.
    و در نهایت برای هر تابع از متد has_perm در user استفاده کنید و چک کنید که یوزر دسترسی داره یا نه.


    موفق باشید

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    خود جنگو سه تا مدل میسازه user , permission , user_user_permission

    این درسته که با دسترسی مستقیم به جدول permission سطوح دسترسی رو درج کنم

    بعد توی جدول user_user_permission ارتباط بین کاربران و سطوح دسترسی رو تعریف کنم

    بعد بر اساس این روابط به قسمت های مختلف برنامه دسترسی ایجاد کنم ؟

  4. #4
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    ببینید اگه به صورت مستقیم توی مدل permission ثبت کنید اگه برنامه تون دیتابیسش به هر دلیلی ریست بشه پرمیشنهای شما دیگه وجود خارجی ندارند پس توصیه من اینه که در مدلتون بنویسید .
    شما اول باید دسترسی هایی که نیاز دارید رو تعریف کنید بعد یک سری گروه با توجه به دسته بندی هایی که توی سیستمتون دارید تعریف کنید. پرمیشنهای مورد نیاز به هرگروه رو اختصاص بدید و بعد به صورت یک decorator (یا هر شیوه ای که خودتون ترجیح میدید)بالای تابع یا متدهاتون میتونید بررسی کنید که کاربر پرمیشن داره یا نه.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    ببینید من یدونه مدل برای گسترش مدل user نوشتم :


    class UserProfile(models.Model):
    user = models.OneToOneField(User)
    verified = models.BooleanField()
    title = models.CharField(max_length = 255, blank = True)
    phone = models.CharField(max_length = 255, blank = True)
    user_name_save = models.CharField(max_length = 50)
    date_time_save = jmodels.jDateField()
    bit_delet = models.BooleanField()
    user_name_delet = models.CharField(max_length = 50)
    date_time_delet = jmodels.jDateField()
    bit_edit = models.BooleanField()
    user_name_edit = models.CharField(max_length = 50)
    date_time_edit = jmodels.jDateField()


    بعد به صورت زیر سطوح دسترسی تعریف کنم :


    class CustomUser(UserProfile):
    pass
    class Meta:
    permissions = (
    ('perm1', 'detail about perm'),
    ('perm2', 'detail about perm'),

    )




    بعدش چی من اصلا متوجه نمیشم

  6. #6
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    class UserProfile(models.Model):
    user = models.OneToOneField(User)
    verified = models.BooleanField()
    title = models.CharField(max_length = 255, blank = True)
    phone = models.CharField(max_length = 255, blank = True)
    user_name_save = models.CharField(max_length = 50)
    date_time_save = jmodels.jDateField()
    bit_delet = models.BooleanField()
    user_name_delet = models.CharField(max_length = 50)
    date_time_delet = jmodels.jDateField()
    bit_edit = models.BooleanField()
    user_name_edit = models.CharField(max_length = 50)
    date_time_edit = jmodels.jDateField()
    class Meta:
    permissions = (
    ('perm1', 'detail about perm'),
    ('perm2', 'detail about perm'),

    )

    به عنوان مثال به شکل بالا باید تعریف بشه. ولی یک مشکلی که کدتون داره اینه که یوزر پروفایل رو جنگو تا جایی که من میدونم از ورژن ۱.۵ شدیدا توصیه میکنه که ازش استفاده نکنید باید به شکل AbstractUser تعریف کنید توی متد جدید

  7. #7
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    User Profile Deprecated

    They have officially deprecated the use of user profiles attached to the default user in favor of custom user models. Custom user models should be setup on initial project creation. If you didn’t do this then you can use something like South to migrate your data. The easiest way to create a custom user model is shown below by extending the base Django user and just adding to it.
    settings.py

    AUTH_USER_MODEL = 'myapp.CustomUser'


    AUTH_USER_MODEL = 'myapp.CustomUser'

    models.py

    from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): keyboard_shortcuts = models.BooleanField(default=True)


    from django.contrib.auth.models import AbstractUser

    class CustomUser(AbstractUser):
    keyboard_shortcuts = models.BooleanField(default=True)

    Now anywhere you would make a foreign key to User you’ll need to import settings and use settings.AUTH_USER_MODEL instead of User.
    models.py

    from django.conf import settings class SomeData(models.Model): .... user = models.ForeignKey(settings.AUTH_USER_MODEL)


    from django.conf import settings

    class SomeData(models.Model):
    ....
    user = models.ForeignKey(settings.AUTH_USER_MODEL)

    منبع:
    http://ericsaupe.com/tag/django-1-6/

  8. #8
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    ولی این روش داره برای من جواب میده و مشکلی نداره

    حالا سوال من اینه که من چطور به هر کاربری سطح دسترسی خاصی رو اختصاص بدم ؟؟
    من نمیخوام از admin خود جنگو استفاده کنم آخه

    ببخشید که انقدر میپرسم
    این قسمتش اصلا برام مفهوم نیست توی جنگو

  9. #9
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    یچیزایی فهمیدم
    برای هر مدلی سطوح دسترسی که وجود داره رو تعریف کنم به روش بالا
    بعد برم اونا رو توی فرمم همه رو نشون بدم
    و برای هر کار بر هر کدوم که لازمه انتخاب کنم و ثبت کنم
    و بعد با دستور :


    @permission_required('polls.can_vote', login_url="/login/")


    بررسی کنم که آیا این سطح دسترسی رو داره یا نه

    درسته ؟؟؟؟؟؟؟؟؟؟؟؟؟

  10. #10
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    جملم رو اصلاح کردم گفتند شدیدا توصیه میکنند که استفاده نکنید.
    خب شما باید یک ویو جدا طراحی کنید واسه دسترسی ها و مثلا دسترسیهارو fetch کنید از مدل Permission به یوزرتون نمایش بدید. بعد دسترسی هارو انتخاب کنید مثلا یک فرم بسازید که دسترسی ها توش باشه و بعد یوزر رو انتخاب کنه . بعد شما بیا فرمت رو تحلیل کن توی ریکوئست پست و مثلا یوزر رو گرفتی از مدلت دسترسی هارو بهش اختصاص بده:

    user = User.objects.get(username=username)
    perm = Permission.objects.get(codename=permission_name)
    user.user_permissions.add(perm)

  11. #11
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    نقل قول نوشته شده توسط malihehshajari مشاهده تاپیک
    یچیزایی فهمیدم
    برای هر مدلی سطوح دسترسی که وجود داره رو تعریف کنم به روش بالا
    بعد برم اونا رو توی فرمم همه رو نشون بدم
    و برای هر کار بر هر کدوم که لازمه انتخاب کنم و ثبت کنم
    و بعد با دستور :


    @permission_required('polls.can_vote', login_url="/login/")


    بررسی کنم که آیا این سطح دسترسی رو داره یا نه

    درسته ؟؟؟؟؟؟؟؟؟؟؟؟؟
    آره درسته :)

  12. #12
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    الان من اینجوری نوشتم



    class Dr(models.Model):
    name = models.CharField(max_length = 50)
    family = models.CharField(max_length = 50)
    number = models.CharField(max_length = 50)
    Specialization = models.CharField(max_length = 50)
    user_name_save = models.CharField(max_length = 50)
    date_time_save = jmodels.jDateField()
    bit_delet = models.BooleanField()
    user_name_delet = models.CharField(max_length = 50)
    date_time_delet = jmodels.jDateField()
    bit_edit = models.BooleanField()
    user_name_edit = models.CharField(max_length = 50)
    date_time_edit = jmodels.jDateField()

    class Meta:
    permissions = (
    ('a', 'دسترس یه صفحه پذیرش '),
    ('b', 'دسترسی به صفحه تست'),

    )



    و از طریق صفحه adminجنگو سطح دسترسی رو گذاشتم روی a

    و کد زیر رو قبل از تابع نوشتم


    @login_required(login_url='/login/')
    @permission_required('a', login_url="/login/")


    ولی با اینکه این سطح دسترسی براش مجاز شده میندازه بیرون کار بر رو چرا ؟؟؟؟؟؟؟؟؟؟؟

  13. #13
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    python manage.py shell

    from django.contrib.auth.models import User
    user = User.objects.get(username='user')
    user.has_perm('a')

    خب یه تست بگیر با دستورات بالا ببین واسه اون یوزری که میگی دسترسی ست کردی True برمیگیردونه یا نه

  14. #14
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    False رو بر میگردونه

  15. #15
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    خب پس درست ست نکردی. واسه ست کردن چیکار میکنی؟

  16. #16
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    نقل قول نوشته شده توسط n.nowroozi مشاهده تاپیک
    خب پس درست ست نکردی. واسه ست کردن چیکار میکنی؟
    رفتم داخل ادمین خود جنگو از داخل سطح دسترسیا اونی رو که خواستم انتخاب کردم بعد با اون فلشی که داشت انتقالش دادم سمت مقابل بعد تغییرات رو ذخیره کردم

  17. #17
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    هووووم نمیدونم چرا میلنگه. اگه پروژتون بزرگه از ادمین استفاده نکنید واسه پروژه های کوچیک خوبه کارو سریع جلو میبره اما یه جاهایی بد دست آدم رو میبنده به نظرم همین داستان رو دستی بنویس که راحتم بتونی باگ گیریش کنی.
    حالا در هر صورت دوباره میری توی اون صفحه واسه اون یوزر همون دسترسی ست شده؟ اگه آره خروجی این رو برای اون یوزری که ست کردی برام بزار:

    myuser = User.objects.get(username='user')
    perm = myuser.user_permissions.all()
    for i in perm:
    print i.codename

  18. #18
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    هیچ چیزی بر نگردوند

    الان از توی برنامه با کدی که گفتید توی پست های بالا یدونه سطح دسترسی براش تعریف کردم و اون سطح دسترسی رو الان بر میگردونه
    ولی بازم با سطح دسترسی که محدودش میکنم منو میندازه بیرون از صفحه :(
    آخرین ویرایش به وسیله malihehshajari : یک شنبه 27 بهمن 1392 در 08:50 صبح

  19. #19
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    خروجی همون دستور رو بعد از اینکه ست کردی بنویس اینجا

  20. #20
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

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

    user = User.objects.get(username= 'b')
    perm = Permission.objects.get(codename= 'b')
    user.user_permissions.add(perm)

    check = False

    myuser = User.objects.get(username='b')
    perm = myuser.user_permissions.all()
    for i in perm:
    if i.codename == 'b' :
    check = True



    خروجی check = True

    اگه دستی خودم کنترل کنم سطح دسترسی رو با کد بالا ایرادی داره ؟ چون اون اصلا جواب نمیده برام
    ممکنه بخاطر userprofile که برای گسترش مدل user نوشتم باشه ؟

  21. #21
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    @permission_required('b', login_url="/login/")

    الان این رو میزاری کار نمیکنه؟!
    خب یا برو توی خود دکوریتور نگاه کن ببین مشکل چیه یا یه دکوریتور خودت دستی بنویس اما قاعدتا نباید مشکلی باشه!

  22. #22
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    تهران
    پست
    307

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    نقل قول نوشته شده توسط n.nowroozi مشاهده تاپیک
    @permission_required('b', login_url="/login/")

    الان این رو میزاری کار نمیکنه؟!
    خب یا برو توی خود دکوریتور نگاه کن ببین مشکل چیه یا یه دکوریتور خودت دستی بنویس اما قاعدتا نباید مشکلی باشه!
    بله کار نمیکنه
    کلا False میشه نتیجش
    خودم دستی مینویسم دیگه
    ممکنه بخاطر userprofile که برای گسترش مدل user نوشتم باشه ؟

    واقعا ممنونم از راهنمایی هایی که کردید و برام وقت گذاشتید خیلی شرمنده ام

  23. #23
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: تعیین سطوح دسترسی کاربران ؟

    نقل قول نوشته شده توسط malihehshajari مشاهده تاپیک
    بله کار نمیکنه
    کلا False میشه نتیجش
    خودم دستی مینویسم دیگه
    ممکنه بخاطر userprofile که برای گسترش مدل user نوشتم باشه ؟

    واقعا ممنونم از راهنمایی هایی که کردید و برام وقت گذاشتید خیلی شرمنده ام
    خواهش میکنم کاری نکردم.
    والا چی بگم اگه تو خود دکوریتور نگاه کنید بهتر معلوم میشه که داستان چیه. اما توی داکیومنت جنگو از ۱.۵ شدیدا توصیه کردند که از userprofile استفاه نکنید نمیدونم حالا واسه چی.

تاپیک های مشابه

  1. سوال: تعیین سطوح دسترسی
    نوشته شده توسط naser67 در بخش PHP
    پاسخ: 7
    آخرین پست: جمعه 04 بهمن 1387, 10:05 صبح
  2. سوال: تعیین سطوح دسترسی برای کاربران
    نوشته شده توسط rtech در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 21 آبان 1387, 12:56 عصر
  3. سوال: پیاده سازی سطوح دسترسی کاربران توسط Login های SQL Sever
    نوشته شده توسط behnam_fagih در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 16 مهر 1387, 14:54 عصر
  4. امکان تعیین حق دسترسی کاربران
    نوشته شده توسط arash ahmadi در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 27 مرداد 1386, 13:02 عصر
  5. تعیین سطح دسترسی کاربران
    نوشته شده توسط amir_masoud در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 18 فروردین 1383, 17:55 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •