আমি আমার ইন্টারফেস ডিজাইন দিকে তাকিয়ে আছি এবং আমি সিদ্ধান্ত নিতে যা ভূমিকা ভিত্তিক প্রবেশাধিকার নিয়ন্ত্রণ বাস্তবায়ন সবচেয়ে "সঠিক" উপায় সংগ্রাম করছি, একজন প্রদত্ত 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()প্রবেশাধিকার নিয়ন্ত্রণ, পরিচালনা ব্যতিক্রম যেখানে ব্যবহারকারী প্রয়োজনীয় অনুমতি নেই নিক্ষেপ?
এই পরিস্থিতিতে "সেরা অনুশীলন" হিসাবে বিবেচিত হবে কি? চেকগুলি সম্পাদন করার দায়িত্বটি আসলে কোথায় হওয়া উচিত?
যেহেতু এটি উভয়ই একাডেমিক অংশ যা তত্পর বাস্তবায়নে অগ্রসর হবে, নকশার নিদর্শনগুলির উল্লেখগুলি প্রশংসা করা হবে।