রোল ম্যানেজার বৈশিষ্ট্যটি সক্ষম করা হয়নি


192

নিম্নলিখিত সরবরাহকারীর ধারণা পেয়েছেন :

রোল ম্যানেজার বৈশিষ্ট্যটি সক্ষম করা হয়নি।

এ পর্যন্ত সব ঠিকই.

কোথাও কোথাও এমন কোনও পদ্ধতি রয়েছে যা রোল ম্যানেজার সক্ষম হয়েছে কিনা তা যাচাই করার জন্য ডাকা যেতে পারে?

উত্তর:


302

আপনি এখানে বুলিয়ান সম্পত্তি থেকে পড়ে এটি করতে পারেন:

System.Web.Security.Roles.Enabled

enabledএটিতে roleManagerউপাদানটির বৈশিষ্ট্য থেকে সরাসরি পড়া web.config:

<configuration>
  <system.web>
    <roleManager enabled="true" />
  </system.web>
</configuration>


আপডেট:
আরও তথ্যের জন্য, এই এমএসডিএন নমুনাটি দেখুন: https ://msdn.mic Microsoft.com/en-us/library/aa354509(v=vs.110).aspx


1
আমি কোডের পরিবর্তে কীভাবে এটি করতে পারি web.config? আমি এটি triedোকানোর চেষ্টা করেছি Application_Startএবং এটি বলেছেThis method can only be called during the application's pre-start initialization phase.
মাসলো

1
এটি ওয়েবকনফাইগে কোথায় যায়?
ম্যাট কনোলি

17
উপরে ওয়েবকনফিগ যোগ করার পরে roleManager সক্ষম করা হয়েছে। তবে এখন আমি ব্যতিক্রম পাচ্ছিUnable to connect to SQL Server database
ইরফান ইউসানিফ

2
@ ইনফোটেক্কা "এসকিউএল সার্ভার ডাটাবেসের সাথে সংযোগ করতে অক্ষম" ত্রুটি।
জ্যাক 14

2
বাহ, এটি একটি দুর্দান্ত উত্তর, আমার এমনকি কিছু কনফিগার করতে হবে না, কেবল একটি কবজির মতো কাজ করে। একবার ওয়েবকনফাইগে কনফিগার হয়ে গেলে, আমি কেবলমাত্র ব্যবহারকারী.ইডেন্টিটি পরীক্ষা করতে পারি। লগইন ব্যবহারকারীর সত্যতা আছে কিনা তা প্রমাণ করার জন্য প্রমাণীকৃত। এত দুর্দান্ত এপ.এন.পি
কোয়ান

52

আপনি নতুনটি ব্যবহার করার কারণে আপনি যদি এখানে পৌঁছে থাকেন তবে আপনি ASP.NET Identity UserManagerযা খুঁজছেন তা হ'ল RoleManager:

var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));

roleManager ভূমিকাটি উপস্থিত রয়েছে কিনা তা দেখার অ্যাক্সেস দেবে, তৈরি করুন ইত্যাদি, এবং এটি এর জন্য তৈরি করা হয়েছে UserManager


73
3 বছরের পুরানো কোনও কিছুর সাথে কী করবে? আমি গুগল থেকে এই পোস্টে নেওয়া হয়েছে কারণ আমি পরিচয় সেট আপ একটি সমস্যা নিয়ে কাজ করছি। যেহেতু আমি এটি বুঝতে পেরেছি ... পরবর্তী ব্যক্তি আমার মতো একই সমস্যা নিয়ে কাজ করছেন যিনি গুগলের মাধ্যমে এখানে এনেছেন তিনি কী করবেন তা জানতে পারবেন ...
সেরজ সাগান

1
এছাড়াও, আইডেন্টিটি ইউজারম্যানেজার প্রদত্ত ব্যবহারকারীর ভূমিকা নেওয়ার জন্য একটি দরকারী বৈশিষ্ট্য রয়েছে: ইউজারম্যানেজ.গেটরোলসঅ্যাসেন্স (ইউজার.আইডেন্টিটি।গেট ইউজারআইডি ());
keithl8041

আপনি কোথায় রোল ম্যানেজার = নতুন রোলম্যানেজার <আইডেন্টিটি রোল> (নতুন রোলস্টোর <আইডেন্টিটি রোল> (নতুন অ্যাপ্লিকেশনডিবি কনটেক্সট ())) রেখেছেন; ?
মারিও এম

আপনি এটি অ্যাপের যে কোনও জায়গায় করতে পারেন। আপনার অবশ্যই স্পষ্টতই কিছু রেফারেন্স সমাধান করতে হবে তবে আপনি যে কোনও আইডেন্টিটি অ্যাপে ভূমিকা নিতে পারেন, আপনি এই বিবৃতিটি ব্যবহার করতে পারেন।
সার্জ সাগান

11

গুগলের মাধ্যমে আমি অন্য কোথাও 2 টি পরামর্শ পেয়েছি যা ক) প্রস্তাবিত হয়েছিল যে) আপনার ডিবি সংযোগের (যেটি রোলস ব্যবহার করছেন) সঠিক এবং এর কীটি সঠিকভাবে বানান করা হয়েছে তা নিশ্চিত করে, এবং খ) যে রোলম্যানেজারে থাকা সক্ষম পতাকাটি সত্য হিসাবে সেট করা আছে making আশা করি এর মধ্যে একজন সাহায্য করবে। এটা আমার জন্য।

আপনি কী ভূমিকাটি পরীক্ষা করার চেষ্টা করেছিলেন? সক্ষম? এছাড়াও, আপনি কতজন সরবরাহকারী উপলব্ধ এবং তা আপনি ডিফল্ট সরবরাহকারীর জন্য Roles.Povider চেক করতে পারেন তা দেখতে Roles.Povators চেক করতে পারেন। যদি এটি নাল হয় তবে একটি নেই।


উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। তবে আমি যা চাই তা তা নয়। আমি এমন একটি পদ্ধতি চাই যা রোল ম্যানেজার বৈশিষ্ট্যটি সক্ষম করা আছে কিনা তা যাচাই করা উচিত, সেই উদ্দেশ্যে সরবরাহকারী ধারণাটি ক্যাশে না করেই।
gsharp

8

এতে উল্লেখ করা ব্যতিক্রমের কারণে আমি এই প্রশ্নটি পেয়েছি। আমার ওয়েব.কনফিগের কোনও <roleManager>ট্যাগ ছিল না । আমি বুঝতে পেরেছি যে আমি এটি যুক্ত করলেও (যেমন ইনফোটেক্কা পরামর্শ দিয়েছিলেন ), এটি একটি ডাটাবেস ব্যতিক্রমেই শেষ হয়েছিল। এখানে অন্যান্য উত্তরের পরামর্শ অনুসরণ করার পরে, কেউই পুরোপুরি সমস্যার সমাধান করেনি।

যেহেতু এই ওয়েব.কনফিগ ট্যাগগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে তাই ম্যানুয়ালি এগুলি যুক্ত করে এটিকে সমাধান করা ভুল বলে মনে হয়েছিল। আপনি যদি একইরকম ক্ষেত্রে থাকেন তবে আপনি ওয়েব.কনফিগ এবং ভিজ্যুয়াল স্টুডিওতে করা সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনুন:

  1. Ctrl+ চাপুন Q, নুগেট টাইপ করুন এবং " নিউগেট প্যাকেজগুলি পরিচালনা করুন" এ ক্লিক করুন;
  2. Ctrl+ টিপুন E, সরবরাহকারীদের টাইপ করুন এবং তালিকায় এটি "মাইক্রোসফ্ট এএসপি.নেট ইউনিভার্সাল প্রোভাইডার কোর লাইব্রেরি " এবং "মাইক্রোসফ্ট এএসপি.নেট ইউনিভার্সাল প্রোভাইডার ফর লোকালডিবি " (উভয় মাইক্রোসফ্ট দ্বারা নির্মিত) প্রদর্শিত হবে;
  3. উভয়ের ইনস্টল বোতামে ক্লিক করুন এবং নিউগেট উইন্ডোটি বন্ধ করুন;
  4. আপনার ওয়েবকনফিগটি পরীক্ষা করুন এবং এখন আপনার প্রোফাইল , মেম্বারশিপ , সেশনস্টেট ট্যাগের ভিতরে এবং নতুন রোলম্যানেজার ট্যাগের মধ্যে কমপক্ষে একটি <providers>ট্যাগ থাকা উচিত :

    <roleManager defaultProvider="DefaultRoleProvider">
        <providers>
           <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=NUMBER" connectionStringName="DefaultConnection" applicationName="/" />
        </providers>
    </roleManager>
  5. এর enabled="true"মতো যুক্ত করুন :

    <roleManager defaultProvider="DefaultRoleProvider" enabled="true">
  6. F6বিল্ড করতে টিপুন এবং এখন ব্যতিক্রম ছাড়াই ডাটাবেস আপডেটে এগিয়ে যাওয়া ঠিক হবে:

    1. Ctrl+ চাপুন Q, ম্যানেজার টাইপ করুন, "প্যাকেজ ম্যানেজার কনসোল" এ ক্লিক করুন;
    2. টাইপ করুন update-database -verboseএবং বীজ পদ্ধতিটি ঠিকঠাক চলবে (যদি আপনি অন্য কোথাও গোলমাল না করেন) এবং আপনার ডাটাবেসে কয়েকটি সারণী তৈরি করবেন;
    3. প্রেস Ctrl+ + W+ + Lসার্ভার এক্সপ্লোরার খুলতে এবং আপনি চেক করতে সক্ষম হওয়া উচিত ডেটা সংযোগের> DefaultConnection> টেবিল ভূমিকা এবং UsersInRoles নব নির্মিত টেবিল মধ্যে টেবিল!

1
" যেহেতু Web.Config ক্ষেত্রগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন হয় " এটি সম্পূর্ণ সঠিক নয়। অনেকগুলি নুগেট প্যাকেজ স্বয়ংক্রিয়ভাবে কনফিগার ফাইলগুলিকে সামঞ্জস্য করবে, এমন কোনও নিয়ম নেই যাতে তাদের এটি করার প্রয়োজন হয়।
কেভিন আর।

এটি নিখুঁত। Thnx
স্যাটেলব্যাপগুলি

6

আপনি যদি ব্যবহার করেন তবে ASP.NET Identity UserManagerআপনি এটির মতো এটিও পেতে পারেন:

var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();

var roles = userManager.GetRoles(User.Identity.GetUserId());

উদাহরণস্বরূপ আপনি যদি গাইড থেকে ইন্টে ব্যবহারকারীর জন্য কী পরিবর্তন করেছেন তবে এই কোডটি ব্যবহার করুন:

var roles = userManager.GetRoles(User.Identity.GetUserId<int>());

এটি আমার পক্ষে কাজ করেছে। আপনি যদি ভোট দিয়ে যাচ্ছেন তবে দয়া করে বলুন।
ওগ্লাস

এটি আপনাকে ব্যবহারকারীর পক্ষে যেমন কাস্ট করতে হবে তা ব্যবহার করে না: ইউজারম্যানেজ.গেটরোলস (কনভার্ট.টোইন্ট 32 (ইউজার.আইডেন্টিটি.গেট ইউজারআইডি <int> ()));
খেলনা

@ টয় না, <int> মান হিসাবে মান পাবে। রূপান্তর করার দরকার নেই। অবশ্যই এটি কাজ করার জন্য পরিচয় কীটি অন্তর্নিহিত হওয়া দরকার।
ওগ্লাস

-1
<roleManager
  enabled="true"
  cacheRolesInCookie="false"
  cookieName=".ASPXROLES"
  cookieTimeout="30"
  cookiePath="/"
  cookieRequireSSL="false"
  cookieSlidingExpiration="true"
  cookieProtection="All"
  defaultProvider="AspNetSqlRoleProvider"
  createPersistentCookie="false"
  maxCachedResults="25">
  <providers>
    <clear />
    <add
       connectionStringName="MembershipConnection"
       applicationName="Mvc3"
       name="AspNetSqlRoleProvider"
       type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <add
       applicationName="Mvc3"
       name="AspNetWindowsTokenRoleProvider"
       type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

-1

এমভিসি 5 এবং আপনার ব্যবহারকারীর ভূমিকার তালিকা পাওয়ার জন্য আপনার অ্যাকাউন্ট নিয়ন্ত্রকটিতে আপনাকে যে কোডটি রাখতে হবে তা এখানে রয়েছে:

csharp public async Task<ActionResult> RoleAdd(string UserID) { return View(await UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList()); }

Roles.GetRolesForUser()রোল ম্যানেজার বৈশিষ্ট্যটি ব্যবহার এবং সক্ষম করার দরকার নেই ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.