मैं भूमिका सत्यापन के लिए और cshtml मैं इस वर्ग के लिए प्रयोग किया जाता में एक स्थिर वर्ग का उपयोग करें, भूमिका सत्यापन cshtml बाहर है।
मुझे अपने प्राधिकृत कार्यों या सामग्री डेटाबेस में (उपयोगकर्ता भूमिका द्वारा या द्वारा) है, ताकि आप न पहुँच परिभाषा परिवर्तन करता है, तो पुनर्वितरित करने के लिए है।
public static class AuthorizeContent
{
public static bool AuthorizeAccessContent(string Content)
{
bool bReturn = false;
DBContext db = new DBContext();
string[] RolesUser = Roles.GetRolesForUser(WebSecurity.CurrentUserName);
foreach (AuthorizedContentRole aut in db.AuthorizedContentRole)
{
foreach (string rol in RolesUser)
{
if (aut.Role==rol && aut.Content==Content)
{
bReturn = true;
break;
}
}
}
foreach (AuthorizedContentUser aut in db.AuthorizedContentUser)
{
if (aut.UserName == WebSecurity.CurrentUserName && aut.Content == Content)
{
bReturn = true;
break;
}
}
return bReturn;
}
/// cshtml
@if (AuthorizeContent.AuthorizeAccessContent(Content))
{
<li class="two">
<h5>Administrator link</h5>
@Html.ActionLink("Admin secret info","Index", "Information")
</li>
}
में आप भी तरह [AccionAuthorize (कार्रवाई = "MyContent")]
public class AccionAuthorizeAttribute : AuthorizeAttribute
{
public string Action { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
filterContext.Result = new HttpUnauthorizedResult();
else if (!AutorizacionContenido.AutorizaAccesoContenido(Action))
filterContext.Result = new HttpUnauthorizedResult();
base.OnAuthorization(filterContext);
}
}
धन्यवाद एक फिल्टर इस्तेमाल कर सकते हैं! यहां एक मोड़ है - मेरे पास मास्टर पेज में मेरे टैब लिंक हैं और मैं कुछ भूमिकाओं के लिए एक टैब दिखाना चाहता हूं। क्या आप जानते हैं कि मैं अपने मास्टर के लिए आईप्रिनिपियर के लिए संदर्भ कैसे जोड़ सकता हूं? – Ben
उपयोग या तो 'HttpContext.Current.user' या' ViewContext.HttpContext.User' - कि :-) – Charlino
आह चाल करना चाहिए, अब मैं पर चीजों के साथ स्थानांतरित कर सकते हैं ... मैं सहायता की सराहना करते – Ben