ई-जी-एन के उत्तर के आधार पर मेरा समाधान यहां है। मेरा उपयोगकर्ता लॉग इन पेज पर सही ढंग से रीडायरेक्ट करता है अगर वे लॉग इन नहीं हैं, लेकिन यदि वे लॉग इन हैं तो एक्सेस अस्वीकृत पृष्ठ पर हैं लेकिन उस पृष्ठ को देखने के लिए अनधिकृत हैं।
[AccessDeniedAuthorize(Roles="SuperAdmin")]
public class SuperAdminController : Controller
AccessDeniedAuthorizeAttribute.cs:
public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult("~/Account/Logon");
return;
}
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectResult("~/Account/Denied");
}
}
}
AccountController.cs:
public ActionResult Denied()
{
return View();
}
दृश्य/खाता/Denied.cshtml: (उस्तरा वाक्य रचना)
@{
ViewBag.Title = "Access Denied";
}
<h2>@ViewBag.Title</h2>
Sorry, but you don't have access to that page.
स्रोत
2011-01-19 18:22:41
यदि उपयोगकर्ता लॉग इन है और पृष्ठ तक पहुंचने का प्रयास करता है, तो उसे AccessDenied पृष्ठ पर रीडायरेक्ट कर दिया जाएगा। अच्छा। लेकिन, यदि उपयोगकर्ता लॉग इन नहीं है, तो वे AccessDenied पृष्ठ पर रीडायरेक्ट हो जाएंगे। खराब।उस स्थिति में, उन्हें लॉगिन पेज पर रीडायरेक्ट किया जाना चाहिए। –
यदि आप पृष्ठ को सामान्य रूप से उस स्थिति में रीडायरेक्ट करना चाहते हैं, जिसके बाद उपयोगकर्ता अब आधार पर नहीं है। ऑनऑधिकरण() विधि कॉल, शेष कोड के आस-पास एक कथन जोड़ें जो जांचता है कि थ्रेडिंग। थ्रेड.कुरेंट प्रिंसिपल। Identity.IsAuthenticated। इस प्रकार उपयोगकर्ता को AccessDenied पृष्ठ पर निर्देशित किया जाता है जब तक उपयोगकर्ता प्रमाणीकृत नहीं होता है ... इस स्थिति में यह डिफ़ॉल्ट कार्रवाई करेगा (लॉगिन पृष्ठ पर रीडायरेक्ट करें) – Frinavale
इस वर्ग को कहां रखा जाता है? नियंत्रक में? – Jay