मेरे विशिष्ट ऐप में, उपयोगकर्ता एएसपीएक्स पेज में एक बटन पर क्लिक करता है, एक सी # बिजनेस ऑब्जेक्ट को आमंत्रित करता है, फिर संग्रहीत प्रक्रिया चलाता है।जहां कॉल स्टैक में भूमिका जांच की जानी चाहिए?
स्टैक के शीर्ष पर, स्टैक के नीचे या हर स्तर पर भूमिका जांच की जानी चाहिए? ऐसा लगता है कि यदि कोई दुर्भावनापूर्ण उपयोगकर्ता एक विधि का आह्वान कर सकता है, तो वह प्रभावी रूप से सुरक्षा के लिए किसी भी आह्वान कर सकता है, आपको प्रत्येक विधि पर एक चेक की आवश्यकता होगी (और यह लिखने के लिए बहुत अधिक कोड है)।
Page_Load()
{
if(p.IsInRole("Managers")) //or equivalent attribute
{
AddAccount.Visible =true;
}
}
AddAccount_OnClick()
{
if(p.IsInRole("Managers")) //or equivalent attribute
{
//Add the account
Account.Add(...); //and maybe another role check...
}
}
-- TSQL doesn't understand .NET authorization, this call is in a 'trusted' subsystem
create proc Add_Account @user, @account_name
If @user in (Select user from role_table where role='manager')
-- Add the account