मैं एक नियंत्रक विधि Edit
जिसमें उपयोगकर्ता डेटा संपादित कर सकते हैं वे इतनी तरह बनाया था बुलाया है ...ASP.NET MVC केवल यह बताने के लिए उपयोगकर्ता संपादित उसका/उसकी खुद की सामग्री
public ActionResult Edit(int id)
{
Submission submission = unit.SubmissionRepository.GetByID(id);
User user = unit.UserRepository.GetByUsername(User.Identity.Name);
//Make sure the submission belongs to the user
if (submission.UserID != user.UserID)
{
throw new SecurityException("Unauthorized access!");
}
//Carry out method
}
इस विधि काम करता है गुण ठीक है हालांकि यह प्रत्येक नियंत्रक संपादन विधि में डालने के लिए थोड़ा गन्दा है। प्रत्येक तालिका में हमेशा UserID
होता है, इसलिए मैं सोच रहा था कि कोड क्लीनर बनाने के लिए [Authorize]
विशेषता या कुछ अन्य तंत्र के माध्यम से इसे स्वचालित करने का कोई आसान तरीका था या नहीं।
धन्यवाद व्यवस्थापक उपयोगकर्ताओं की तरह कुछ अनुमति देने के लिए बाद में लचीलापन होता है करने की अनुमति होगी! मैं इसे और अधिक सामान्य बनाने जा रहा हूं। जैसा कि IUserOwnable नामक एक इंटरफ़ेस को प्रस्तुत करना है जिसमें उपयोगकर्ता आईडी है। और उसके बाद उस संग्रह में संग्रह को पास करें जहां यह IUserOwnable लाता है और उपयोगकर्ता के उपयोगकर्ता आईडी को IUserOwnable –
के उपयोगकर्ता आईडी से तुलना करता है, निश्चित रूप से, यह सामान्य के रूप में बनाया जा सकता है क्योंकि आप अपनी विशिष्ट आवश्यकताओं के अनुरूप होना चाहते हैं। –
अच्छा दृष्टिकोण। मैं इस बात को रोक रहा था कि अब तक यह –