নেট অ্যাপ্লিকেশনের জন্য অনুমতি / ডান মডেল / প্যাটার্ন


9

আমার নমনীয় এবং সহজ প্রয়োগ করতে হবে (যদি এ জাতীয় জিনিস বিদ্যমান থাকে) এবং একই সাথে সম্ভব হলে বিল্ট-অন উপায়গুলিও কাজে লাগাতে হবে

এখনও অবধি আমি মেম্বারশিপ প্রোভাইডার এবং রোলপ্রভাইডারগুলি প্রয়োগ করেছি। এটি দুর্দান্ত তবে আমি কোথায় যাব?

আমার মনে হচ্ছে আমার "প্রাইভেলিজ" শব্দটি যুক্ত করা উচিত এবং এর মধ্যে থাকা অ্যাপ্লিকেশনগুলিকে হার্ডকোডের চেয়ে বেশি করা উচিত। ব্যবহারকারীরা ভূমিকাগুলিতে বিশেষাধিকার যোগ করতে ভূমিকা কনফিগার করবেন এবং ব্যবহারকারীদেরকে ভূমিকা অর্পণ করবেন।

একটি ভাল মডেল মত শব্দ? ইউরোপ লেভেলগুলিকে রোলগুলিতে যুক্ত করার শীর্ষে ব্যক্তিগতকৃত যোগ করার বিষয়ে আমার কি ভাবা উচিত? আমি সম্ভবত সেটআপ (বিভ্রান্তিকর) এবং নিম্নলিখিত সহায়তায় সমস্যাগুলি কল্পনা করতে পারি।

যদি আমি এটি না করি এবং কিছু নির্দিষ্ট ব্যবহারকারীর কম প্রাইভেলিজ প্রয়োজন হবে - অ্যাডমিনকে অন্য ভূমিকা তৈরি করতে হবে, ইত্যাদি ..

সিস্টেমের জন্য কোনও রূপালী বুলেট? এবং কেন মাইক্রোসফ্ট কেবল মেম্বারশিপ এবং রোল প্রোভাইডারদের সাথে আরও এগিয়ে গেল না?

আরেকটি ধারণা: ভূমিকাগুলিকে "ব্যক্তিগতকৃত" ধারক হিসাবে ছেড়ে দিন এবং তাদের হার্ডকোড করুন। তারপরে আমি সমস্ত উপলব্ধ মার্কআপস / বৈশিষ্ট্য ইত্যাদি ব্যবহার করে অ্যাপের অভ্যন্তরে সেই ভূমিকাগুলিতে কোড করতে পারি can সমস্ত মাইক্রোসফ্ট।

নতুন সত্তা "গোষ্ঠী" যুক্ত করুন এবং এর মতো সম্পর্ক তৈরি করুন

  • ব্যবহারকারীরা
  • ইউজারগ্রুপ
  • গ্রুপ
  • RoleGroups
  • ভূমিকা

এইভাবে আমি গোষ্ঠীগুলিতে রোলগুলি সংগ্রহ করতে এবং ব্যবহারকারীদের এই গোষ্ঠীগুলি নির্ধারণ করতে পারি। দুর্দান্ত লাগছে এবং অন্যান্য সফ্টওয়্যার নিদর্শনগুলির সাথে মেলে। তবে তারপরে আমি রোলপ্রোভাইডারের মতো জিনিসগুলিকে সত্যিই বাস্তবায়ন করতে পারি না:

  • AddUsersToRoles
  • RemoveUsersFromRoles

এবং কিছু জিনিস সত্যই আর বোঝায় না কারণ সেগুলি হার্ড-কোডেড হবে

  • DeleteRole
  • CreateRole

উত্তর:


5

যদি ভূমিকা-ভিত্তিক অনুমোদন আপনার জন্য পর্যাপ্ত পরিমাণে দানাদার না হয় তবে দাবি-ভিত্তিক অনুমোদনের ব্যবহার বিবেচনা করুন ।

একটি দাবি একটি সংস্থান এবং ক্রিয়াকলাপ বর্ণনা করে - একটি এসিএলে প্রবেশের মতো ধরণের, তবে আরও নমনীয়, কারণ "সংস্থান" কোনও শারীরিক বস্তু হতে হবে না, এটি আপনি যা চান তা হতে পারে এবং কোনও তথ্য থাকতে পারে তুমি চাও.

এই মডেলটিতে, দাবিটিকে আপনি "সুবিধাবঞ্চিত" বলার সমতুল্য, এবং আপনি দাবি সেটগুলিতে দাবী করেন, যা আপনি "ভূমিকা" বলছেন তার সমতুল্য equivalent এই সমস্ত API গুলি এবং আরও অনেক কিছু ইতিমধ্যে System.IdentityModelনেমস্পেসে রয়েছে।

অবশ্যই আপনি উল্লেখ করেছেন MembershipProviderএবং RoleProviderএবং যদি আপনি এএসপি.এনইটি সদস্যতার মডেলটিতে (সমস্ত নামগুলি বোঝায়) এটি ক্র্যাম করার চেষ্টা করছেন, তবে কেবল এটি ভুলে যান। আপনি যদি সেই সরবরাহকারী এপিআইগুলি ব্যবহার করতে চান তবে আপনাকে তাদের এটি করতে হবে, এবং তাদের উপায় কোনও ভূমিকাটির ধারণার চেয়ে আর কোনও দানাদার পায় না।

পরিবর্তে, এএসপি.এনইটি-তে একটি "প্রিভিলেজ" ধারণাটি আসলে অ্যাকশন বা অপারেশন পর্যায়ে এনকোড থাকে যেখানে আপনি ঘোষণা করেন যে কোন ভূমিকাটি সেই ক্রিয়াটি সম্পাদন করার অনুমতিপ্রাপ্ত। এএসপি.নেট এমভিসি যেখানে আপনি [AuthorizeAttribute]কন্ট্রোলার বা নিয়ামক ক্রিয়াকলাপের উপরে চড় মারছেন সেখানে এটি মোকাবিলা করা সত্যিই অনেক সহজ ; "পুরাতন-স্কুল" এএসপি.নেটে, আপনি ইভেন্টগুলি পরিচালনা করছেন, সুতরাং অনুমোদন হয় হয় অ্যাড-হক বা পৃষ্ঠা স্তরে (বা উভয়)।


প্রচুর দুর্দান্ত তথ্য, ধন্যবাদ! অ্যাপ্লিকেশনটি আসলে ডাব্লুসিএফ RESTful পরিষেবা হিসাবে প্রকাশিত সার্ভারের অংশ সহ সিলভারলাইট অ্যাপ। দাবি-ভিত্তিক আকর্ষণীয় দেখায় তবে এর অভ্যন্তরে আমি ব্যবহারকারী এবং স্বায়ত্বকরণের ধারণাটি লক্ষ্য করি নি। আকর্ষণীয় নিবন্ধটি আমি সবেমাত্র পেয়েছি: geekswithblogs.net/shahed/archive/2010/02/05/137795.aspx
কাতিত

@ কেটিট: .NET- এ কার্যত সমস্ত প্রমাণীকরণ / অনুমোদন আইপি - মূলসূচক ইন্টারফেসের উপর ভিত্তি করে । আপনি যদি দাবি-ভিত্তিক অনুমোদন করছেন তবে আপনি তার জন্য একটি আইক্লেইমস প্রিন্সিপাল ব্যবহার করুন এবং IPrincipalআপনি IClaimsPrincipalযখন দাবি চেক করতে চান তখন এটিকে নিক্ষেপ করুন । আপনি যদি নিজের কোডটি (উদাহরণস্বরূপ) ফর্ম প্রমাণীকরণের সাথে এটি ফিট করতে চান তবে আপনি অনেকগুলি নিজেরাই লিখবেন, তবে অবশ্যই এটি করা যেতে পারে (লিঙ্ক অনুসারে)।
অ্যারোনআউট

প্রশ্নটি হল .. সম্ভবত সদস্যপদ / ভূমিকা প্রদানকারীদের সাথে অন্য একটি "গ্রুপ" স্তর যুক্ত করা বা নিজের সরবরাহকারী লিখতে আরও সহজ? মাইক্রোসফট বেশী বাস্তবায়ন যেমন কাজের প্রায় কাছাকাছি একই পরিমাণ
katit

3
@ ক্যাটিট: বিখ্যাত সর্বশেষ শব্দ। নিজের উদ্ভাবনের খুব ভাল কারণ না থাকলে নিজের উদ্ভাবন করবেন না ("এটি সহজ মনে হয়" ভাল কারণ নয়; এটি কেবল তখন সহজ মনে হয় যখন আপনার সরাসরি অভিজ্ঞতা না থাকে এবং সুতরাং বিচারকের বিচার করার ক্ষমতা নেই) প্রয়োজনীয় কাজের পরিমাণ)।
অ্যারোনআউট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.