第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在ASP.NET MVC中重定向未經(jīng)授權(quán)的控制器

在ASP.NET MVC中重定向未經(jīng)授權(quán)的控制器

C#
楊__羊羊 2019-12-12 14:26:56
我在ASP.NET MVC中有一個(gè)控制器,但僅限于管理員角色:[Authorize(Roles = "Admin")]public class TestController : Controller{   ...如果沒(méi)有管理員角色的用戶導(dǎo)航到該控制器,則會(huì)看到空白屏幕。我想做的就是將他們重定向到View,上面寫(xiě)著“您必須具有管理員角色才能訪問(wèn)此資源”。我想到的一種方法是檢查IsUserInRole()上的每個(gè)操作方法,如果不起作用,則返回此信息視圖。但是,我必須將其放入每個(gè)會(huì)破壞DRY原理并且很麻煩維護(hù)的Action中。
查看完整描述

3 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以HandleUnauthorizedRequest在自定義中使用可覆蓋的內(nèi)容AuthorizeAttribute


像這樣:


protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)

{

    // Returns HTTP 401 by default - see HttpUnauthorizedResult.cs.

    filterContext.Result = new RedirectToRouteResult(

    new RouteValueDictionary 

    {

        { "action", "YourActionName" },

        { "controller", "YourControllerName" },

        { "parameterName", "YourParameterValue" }

    });

}

您還可以執(zhí)行以下操作:


private class RedirectController : Controller

{

    public ActionResult RedirectToSomewhere()

    {

        return RedirectToAction("Action", "Controller");

    }

}

現(xiàn)在,您可以通過(guò)HandleUnauthorizedRequest以下方式在您的方法中使用它:


filterContext.Result = (new RedirectController()).RedirectToSomewhere();


查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

“ tvanfosson”的代碼給了我“執(zhí)行子請(qǐng)求時(shí)出錯(cuò)”。我這樣更改了OnAuthorization:


public override void OnAuthorization(AuthorizationContext filterContext)

    {

        base.OnAuthorization(filterContext);


        if (!_isAuthorized)

        {

            filterContext.Result = new HttpUnauthorizedResult();

        }

        else if (filterContext.HttpContext.User.IsInRole("Administrator") || filterContext.HttpContext.User.IsInRole("User") ||  filterContext.HttpContext.User.IsInRole("Manager"))

        {

            // is authenticated and is in one of the roles 

            SetCachePolicy(filterContext);

        }

        else

        {

            filterContext.Controller.TempData.Add("RedirectReason", "You are not authorized to access this page.");

            filterContext.Result = new RedirectResult("~/Error");

        }

    }

這很好用,我在錯(cuò)誤頁(yè)面上顯示了TempData。感謝“ tvanfosson”的代碼片段。我正在使用Windows身份驗(yàn)證,_isAuthorized只是HttpContext.User.Identity.IsAuthenticated ...


查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 3 回答
  • 0 關(guān)注
  • 560 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)