आइए कहें कि मेरे पास एएसपी.NET एमवीसी ऐप है और यह ऐप (यूआई) एक बिजनेस लॉजिक लेयर (बीएलएल) संदर्भित करता है और बीएलएल मेरे डेटा एक्सेस लेयर (डीएएल) का संदर्भ देता है।एनटीयर ऐप में नेट सदस्यता
मैं प्राधिकरण के लिए कस्टम सदस्यता और भूमिका प्रदाता का उपयोग कर रहा हूं।
मैं यह निर्धारित करने की कोशिश कर रहा हूं कि परतों को मेरे सदस्यता प्रदाता को संदर्भित करने की आवश्यकता है।
MVC में आप निम्नलिखित तरीके से प्राधिकरण जांच कर सकते हैं:
public static bool IsRoleEditor(User user, Role userRole)
{
bool retValue = false;
if (user.Application.AppID == UserRole.Application.AppID)
{
if (Roles.IsUserInRole("ModifyRoles"))
{
retValue = true;
}
return retValue;
}
:
[Authorize(Roles = "SomeRoleName")]
public ActionResult Index()
{
//do something
}
और मेरे BLL में मैं चाहते हो सकता है अगर एक उपयोगकर्ता के रूप में अच्छी तरह से एक भूमिका में है देखने के लिए जाँच करने के लिए
यदि मैं ऐसा करता हूं तो मुझे दोनों परतों में सदस्यता कक्षाओं को संदर्भित करना होगा और तत्काल करना होगा। क्या यह इस तरह के ऐप को आर्किटेक्ट करने का सही तरीका है? बहुत अनावश्यकता की तरह लगता है।
चूंकि मेरे पास बीएलएल है, इसलिए मैं "[प्राधिकरण (भूमिकाएं =" कुछ रोल नाम ")] गुणों का उपयोग करने से बचता हूं और इसके बजाय एमवीसी कोड के भीतर से एक बीएलएल फ़ंक्शन को कॉल करता हूं ताकि यह जांच सके कि उपयोगकर्ता भूमिका में है या नहीं? यदि मैं ऐसा करता हूं तो एमवीसी को अभी भी प्रमाणीकरण के लिए सदस्यता प्रदाता के संदर्भ की आवश्यकता है और इस तरह लॉगिन और अन्य एएसपी नियंत्रणों का लाभ उठाने के लिए, वैसे भी?
क्या मैं गलत दिशा में आधार और आगे बढ़ रहा हूं?
निश्चित रूप से एमवीसी में प्राधिकृत विशेषता का उपयोग करें। आपको IsInRoles मैन्युअल रूप से जांचने की आवश्यकता नहीं है। –
समस्या यह है कि मुझे "IsInRole" या "प्राधिकृत" के अतिरिक्त अतिरिक्त व्यावसायिक तर्क को संसाधित करने की आवश्यकता है, जिसे मैंने हमेशा बीएलएल में होना चाहिए था। मैं हर जगह उपयोगकर्ता ऑब्जेक्ट पास कर सकता हूं, लेकिन फिर क्यों न केवल प्राधिकरण को छोड़ दें और केवल बीएलएल का उपयोग करें। उत्तर के लिए – Jay