के डुप्लिकेशन से बचने के लिए कैसे मैंने System.Web.Mvc.AuthorizeAttribute से व्युत्पन्न एक कस्टम प्राधिकरण विशेषता लिखी है। मैं कुछ विशेषताओं तक पहुंच प्रतिबंधित करने के लिए इसे अपने नियंत्रकों से सफलतापूर्वक उपयोग कर रहा हूं।प्राधिकरण कोड तर्क
public class ArticleController : Controller
{
[CustomAuthorize(Role.Administrator)]
public ActionResult Delete(int id)
{
// ...
}
}
और यह ठीक काम करता है। अब मैं एक ही प्राधिकरण तर्क के अनुसार HTML तत्वों को दिखाना या छिपाना चाहता हूं। उदाहरण के लिए, मेरे आलेख "आलेख" में, यदि उपयोगकर्ता व्यवस्थापक नहीं है तो मैं कार्रवाई बटन "हटाएं" को छिपाना चाहता हूं। मैं ऐसा ही कुछ लिखा है:
<ul id="menu">
<li>@if (User.IsInRole(Role.Administrator)) {
@Html.ActionLink("Delete", "Delete", "Article", new { id = article.ID }, null)
} </li>
</ul>
यह ठीक के रूप में अच्छी तरह से काम है, लेकिन यह कोड तर्क दोहराव पैदा करता है क्योंकि मैं कोई कार्रवाई करने के दो बार आवश्यक credientials निर्दिष्ट करना होगा: नियंत्रक में
- कार्रवाई को ब्लॉक या अनुमति देने के लिए।
- एक्शन लिंक दिखाने या छिपाने के लिए दृश्य में।
इस डुप्लिकेशन से बचने का सबसे अच्छा तरीका क्या है? क्या विचारों से मेरी कस्टम प्राधिकरण विशेषता का पुन: उपयोग करने का कोई तरीका है?