簡體   English   中英

使用授權屬性ASP.Net MVC

[英]Using authorize attribute ASP.Net MVC

我使用Authorize屬性來檢查用戶是否被授權進入特殊視圖。

    [HttpGet]
    [Authorize]
    public ActionResult Index(int ID)
    {
             ViewBag.sID = ID;
             return View();
    }

假設這是mu URL:localhost:16621 / Panel / Index / 1現在,該授權用戶可以將1更改為2並導航到另一個用戶信息。 像localhost:16621 / Panel / Index / 2如何防止這種情況??? 有什么方法可以傳遞參數來授權屬性? 如何防止用戶訪問其他用戶信息?

恐怕沒有神奇的開關-[授權]只會啟動未授權的用戶,不在指定范圍內的用戶或角色錯誤的用戶。 上下文綁定數據的安全性取決於您-您必須在Index()主體中執行此操作,如果傳遞的ID對實際用戶不可用,則必須將用戶重定向到其他位置。

正是為此目的提供了一個“ AuthenticationFilter” ASP.NET MVC5。

驗證過濾器

身份驗證篩選器是ASP.NET MVC中的一種新型篩選器,它在ASP.NET MVC管道中的授權篩選器之前運行,並允許您為每個控制器,每個控制器或全局指定身份驗證邏輯。 身份驗證過濾器處理請求中的憑據並提供相應的主體。 身份驗證過濾器還可以響應未授權的請求而添加身份驗證挑戰。

有關如何使用它,請參見本教程

using System.Web.Mvc;
using System.Web.Mvc.Filters;

namespace VSMMvc5AuthFilterDemo.CustomAttributes
{
  public class BasicAuthAttribute : ActionFilterAttribute, IAuthenticationFilter
  {
    public void OnAuthentication(AuthenticationContext filterContext)
    {
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
      var user = filterContext.HttpContext.User;
      if (user == null || !user.Identity.IsAuthenticated)
      {
        filterContext.Result = new HttpUnauthorizedResult();
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM