مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

تعیین دسترسی کاربران بر اساس نقش در MVC به مشکل برخوردم

  • شنبه 14 مرداد 1396
  • 15:13
تشکر میکنم

با سلام ببینید من از این آموزش استفاده کردم

این لینک https://barnamenevisan.org/Articles/Article3227.html

همه قسمت هاشو انجام دادم فقط قسمت آخرش تنظیمات web.config چی باید باشه توو عکس مشخص نیست

فتم توو اینترتم گشتم اینو دیدم ببینید

<membership>
      <providers>
        <clear />
        <add name="MyMembershipProvider" type="ProjectShop.Classes.MyMembershipProvider" connectionStringName="dbgenericlabEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""  Default="ProjectShop.Classes.MyMembershipProvider"  applicationName="/" />
      </providers>
    </membership>

اما متاسفانه وقتی اجرا میکنم این ارور رو میده

اگه کسی اینو انجام داده میشه بگید من توو web.config چی بزارم ؟

متشکرم

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 14 مرداد 1396
  • 15:20

کد زیر را اضافه کنید :

<membership defaultProvider="MyMembershipProvider">

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • شنبه 14 مرداد 1396
  • 17:38

ببینید من web.config امو همون طور که گفتید به این صورت در آوردم و لرور برطرف شد

<membership defaultProvider="MyMembershipProvider">
      <providers>
        <clear />
        <add name="MyMembershipProvider" type="ProjectShop.Classes.MyMembershipProvider" connectionStringName="dbgenericlabEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" />
      </providers>
    </membership>

اما اصلا توو این کد ما جایی بهش نگفتیم بره MyRoleProvider یعنی اینو هیچ جا تعریف نکردیم منظورم اینه اصلا وارد MyRoleProvider نمیشه که بخواد role ها مشخص کنه

ببینید من دو تا کلاس MyRoleProviderوMyMembershipProvider دارم و توو وب کانفیگ هم ما MyMembershipProvider رو مسیرش رو مشخص کردیم اما حرفی از جای MyRoleProvider نزدیم

توو اکش ها هم بالاش اینو گذاشم مثلاً

[Authorize(Roles = "Eftekharat")]

خب وقتی ورود رو میزنم وارد MyMembershipProvider میشه و معتبر بودن رو چک میکنه اما وقتی رو اکشنم میزنم میپره صفحه ورود و اصلا وارد MyRoleProvider نمیشه که چک کنه بیچاره role داره

راستی توو وب کانفیگ اینم دارما

 <authentication mode="Forms">
      <forms loginUrl="~/Home/Login" timeout="43200" slidingExpiration="true" />
    </authentication>

یعنی ایراد از این نیست؟

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

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 14 مرداد 1396
  • 17:41

علت خطا مشخص نکردن Provider پیش فرض است، شما باید نام Provider خود را جایگزین MyMembershipProvider کنید.

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • شنبه 14 مرداد 1396
  • 17:49

نه آقای علیزاده اونی که شما اول گفتید درست شد یعنی نامشو درست کردم از membership ایراد نگرفت اصلا وارد MyRoleProvider.cs نشد role ها رو ببینه

خودم فهمیدم اینو به web.config  اضافه کردم درست شد

<membership defaultProvider="MyMembershipProvider">
      <providers>
        <clear />
        <add name="MyMembershipProvider" type="ProjectShop.Classes.MyMembershipProvider" connectionStringName="dbgenericlabEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" />
      </providers>
    </membership>
    
    <roleManager defaultProvider="MyRoleProvider" enabled="true">
      <providers>
        <clear />
        <add name="MyRoleProvider" type="ProjectShop.Classes.MyRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)