আমি আমার ইন্টারফেস ডিজাইন দিকে তাকিয়ে আছি এবং আমি সিদ্ধান্ত নিতে যা ভূমিকা ভিত্তিক প্রবেশাধিকার নিয়ন্ত্রণ বাস্তবায়ন সবচেয়ে "সঠিক" উপায় সংগ্রাম করছি, একজন প্রদত্ত user
এবং subject
যে user
অ্যাক্সেস করতে চায়।
যতদূর আমি দেখতে পাচ্ছি আমার কাছে তিনটি মূল অপশন রয়েছে (চতুর্থটি প্রথম তিনটির জারজ এবং এক পঞ্চমটি চতুর্থের একটি টুইট):
subject
অনুমতিগুলির তালিকাসমূহের সাথে প্রশ্নটি করুনuser
-subject.allowAccess(user.getPermissionSet)
- প্রয়োজনীয়
user
অনুমতিগুলির তালিকার সাথে অনুসন্ধান করুনsubject
-user.hasPermissionTo(subject.getRequiredPermissions())
- অনুমতিগুলির ছেদগুলি সনাক্ত করতে একটি তৃতীয় পক্ষের জিজ্ঞাসা করুন -
accessController.doPermissionSetsIntersect(subject.permissionSet, user.getPermissionSet())
- তৃতীয় পক্ষের শ্রেণিতে "সিদ্ধান্ত" অর্পণ করার সময় হয়
subject
/ / কে প্রশ্ন করুনuser
- অ্যাক্সেসের অনুমতি না থাকলে অ্যাক্সেস করার
user
চেষ্টা করুনsubject
এবং একটি ত্রুটি নিক্ষেপ করুন
আমি বিকল্প চারটির দিকে ঝুঁকছি - subject
এতে একটি accessController
ক্ষেত্র রয়েছে, যেখানে subject.userMayAccess(User user)
অপারেশনটিকে লা দেওয়ার জন্য কল রয়েছে :
class Subject {
public function display(user) {
if(!accessController.doPermissionSetsIntersect(this.permissionSet, user.getPermissionSet())) {
display403(); //Or other.. eg, throw an error..
}
}
}
.. তবে তারপরে এটি আরও প্রশ্ন উত্থাপন করে:
accessController
স্ট্যাটিক বনাম একটি ক্ষেত্র হওয়া উচিত ..?- এটি
subject
জানতে সক্ষম হওয়ার জন্য কী অনুমতিগুলির প্রয়োজন তা কোনও জানা উচিত ? - কল করার ক্ষেত্রে এখানে ন্যূনতম জ্ঞানের নীতিটি কোথায় কার্যকর হয়
subject.display()
? কলকারীরাsubject.display()
কি কখনও জানবেন যে অ্যাক্সেস নিয়ন্ত্রণ কার্যকর? (subject.display()
একটি চূড়ান্ত "টেম্পলেট পদ্ধতি" কোথায় ) - আছে
subject.display()
প্রবেশাধিকার নিয়ন্ত্রণ, পরিচালনা ব্যতিক্রম যেখানে ব্যবহারকারী প্রয়োজনীয় অনুমতি নেই নিক্ষেপ?
এই পরিস্থিতিতে "সেরা অনুশীলন" হিসাবে বিবেচিত হবে কি? চেকগুলি সম্পাদন করার দায়িত্বটি আসলে কোথায় হওয়া উচিত?
যেহেতু এটি উভয়ই একাডেমিক অংশ যা তত্পর বাস্তবায়নে অগ্রসর হবে, নকশার নিদর্শনগুলির উল্লেখগুলি প্রশংসা করা হবে।