دسته بندی ها
11:14 1399/01/22

روش اجرای یک اکشن دیگر به هنگام accessdeny در authorize یک اکشن

مشخصات سوال کننده :
کاربر : Soltani     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2091
هوش مصنوعی

پاسخ هوش مصنوعی

برای مدیریت خطای AccessDenied و هدایت به یک اکشن یا صفحه خاص، می توانید از فیلتر OnAuthorization در ASP.NET MVC استفاده کنید. اینجا یک نمونه برای هدایت به یک اکشن دیگر در زمان مواجهه با این خطا ارایه می شود:


public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            // کاربر احراز هویت شده است اما دسترسی ندارد
            filterContext.Result = new RedirectToRouteResult(
                new System.Web.Routing.RouteValueDictionary 
                {
                    { "controller", "Home" }, // کنترلری که می خواهید کاربر را به آن هدایت کنید
                    { "action", "AccessDenied" } // اکشنی که می خواهید کاربر را به آن هدایت کنید
                });
        }
        else
        {
            // کاربر احراز هویت نشده است
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

سپس می توانید از این فیلتر به جای Authorize به صورت زیر استفاده کنید:


[CustomAuthorize]
public ActionResult MyAction()
{
    return View();
}

اکنون اگر کاربری به MyAction دسترسی نداشته باشد، به اکشن AccessDenied در کنترلر Home هدایت خواهد شد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود