ASP.NET Core 中的授權通過?[Authorize]?屬性及其各種參數控制。 在其最基本的形式中,通過向控制器、操作或?[Authorize]
?Page 應用 Razor 屬性,可限制為僅允許經過身份驗證的用戶訪問該組件。
使用?[Authorize]
?屬性
以下代碼限制為僅允許經過身份驗證的用戶訪問?AccountController
:
[Authorize]
public class AccountController : Controller
{public ActionResult Login(){}public ActionResult Logout(){}
}
如果要將授權應用于操作而不是控制器,請將?AuthorizeAttribute
?屬性應用于操作本身:
public class AccountController : Controller
{public ActionResult Login(){}[Authorize]public ActionResult Logout(){}
}
現在只有經過身份驗證的用戶才能訪問?Logout
?函數。
你還可以使用?AllowAnonymous
?屬性來允許未經身份驗證的用戶訪問單個操作。 例如:
[Authorize]
public class AccountController : Controller
{[AllowAnonymous]public ActionResult Login(){}public ActionResult Logout(){}
}
此代碼僅允許經過身份驗證的用戶訪問?AccountController
,但?Login
?操作除外,每個人都可以訪問該操作,無論其狀態是經過身份驗證、未經過身份驗證還是匿名。
[AllowAnonymous]
?繞過授權語句。 如果將?[AllowAnonymous]
?和某個?[Authorize]
?屬性結合使用,系統將忽略?[Authorize]
?屬性。 例如,如果在控制器級別應用?[AllowAnonymous]
:
- 將忽略來自同一控制器上的屬性?
[Authorize]
?或控制器上的操作方法的任何授權要求。 - 身份驗證中間件不會短路,但不需要成功。
以下代碼限制為僅允許經過身份驗證的用戶訪問?LogoutModel
Razor 頁面:
[Authorize]
public class LogoutModel : PageModel
{public async Task OnGetAsync(){}public async Task<IActionResult> OnPostAsync(){}
}