如何解决Authorize属性和AuthorizePagestring方法之间的区别
我想知道ASP.NET Core中[Authorize]
属性和AuthorizePage(string)
方法是否有任何区别?项目使用ASP.NET Core 3.1。使用一个有什么优点或缺点?
众所周知,下面的两个代码具有相同的作用:
使用 [Authorize]
属性
// ...
namespace MyApp.Account.Manage
{
[Authorize]
public partial class IndexModel : PageModel
{
// ...
使用 AuthorizePage(string)
方法 Startup.ConfigureServices
services.AddMvc()
.AddMvcOptions(o => o.EnableEndpointRouting = false)
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("Account/Manage");
});
解决方法
是的,[Authorize]属性和AuthorizePage()都为指定页面设置了授权。
使用[Authorize]
属性。
基于角色的授权中使用的Authorize属性,使您可以基于角色来限制对资源的访问。它是一种声明性属性,可以应用于控制器或操作方法或“剃刀”页面。如果指定此属性时不带任何参数,它将仅检查用户是否已通过身份验证。
通过Authorize属性,当用户访问指定的控制器或操作方法或Razor页面时,它将检查当前用户是否具有访问权限。
使用AddRazorPagesOptions方法和AuthorizePage()方法。
Asp.net核心提供了一种控制Razor Pages应用程序访问的方法,即在启动时使用授权约定。通过这种方式,我们可以使用AddRazorPagesOptions方法将约定添加到页面,例如使用AuthorizePage方法将授权添加到指定的页面(与Authorize属性相同)。
但是通过使用授权约定方法,它提供了相关的方法来向页面文件夹,区域页面或区域文件夹添加授权。
摘要,如果只想为指定页面设置授权,则可以使用它们中的每一个。但是,如果要为多个页面设置授权,最好使用授权约定方法。有关更多详细信息,请检查Razor Pages authorization conventions in ASP.NET Core。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。