Asp.net mvc 自定义MVC授权是如何工作的?
当我们扩展Authorize属性时,我在理解MVC中授权是如何工作的方面遇到了一些问题 因此,在代码中,我们扩展了authorized属性,如下所示:Asp.net mvc 自定义MVC授权是如何工作的?,asp.net-mvc,authorization,authorize-attribute,Asp.net Mvc,Authorization,Authorize Attribute,当我们扩展Authorize属性时,我在理解MVC中授权是如何工作的方面遇到了一些问题 因此,在代码中,我们扩展了authorized属性,如下所示: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public class AuthExtendAttribute : AuthorizeAttribute filters.Add(
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AuthExtendAttribute : AuthorizeAttribute
filters.Add(new AuthExtendAttribute());
[Authorize]
public bool DoStuff()
然后,我们将扩展添加到全局筛选器列表中,如下所示:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AuthExtendAttribute : AuthorizeAttribute
filters.Add(new AuthExtendAttribute());
[Authorize]
public bool DoStuff()
然后,操作方法使用Authorize属性修饰,如下所示:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AuthExtendAttribute : AuthorizeAttribute
filters.Add(new AuthExtendAttribute());
[Authorize]
public bool DoStuff()
我的问题是,这个新扩展是否将替换[Authorize]属性的默认行为,或者框架是否仍将使用默认行为,然后在AuthExtendAttribute中调用重写的方法
另外,如果我可以简单地用[AuthExtend]装饰我的操作方法,为什么我需要将扩展添加到全局筛选器列表中
对于较新的MVC应用程序,我们不应该扩展Authorize属性,而是应该使用新的基于策略的授权,这也是事实吗
您有两个独立的操作过滤器。通过将新过滤器注册为全局过滤器,您只需使其可用于应用程序中的所有操作 使用原始设置,两个过滤器都将执行。如果要控制它们的执行顺序,可以查看顺序和范围属性;更多信息请点击此处: 另外,如果我可以简单地用[AuthExtend]装饰我的操作方法,为什么我需要将扩展添加到全局过滤器列表中 这取决于你想做什么。您的全局筛选器将对所有操作执行。通常,您只会使用扩展属性,我不明白为什么您会同时使用这两个属性。 不确定自定义筛选器是如何实现的,身份验证是如何设置的,但在全局注册筛选器后,用户将如何登录(因为他们需要获得访问登录页面的授权) 我认为最好是使用自定义过滤器,并根据需要将其添加到控制器和/或操作的顶部 对于较新的MVC应用程序,我们不应该扩展Authorize属性,而是应该使用新的基于策略的授权,这也是事实吗
我不认为基于策略的授权和创建自定义操作过滤器是相互排斥的 您有两个独立的操作过滤器。通过将新过滤器注册为全局过滤器,您只需使其可用于应用程序中的所有操作 使用原始设置,两个过滤器都将执行。如果要控制它们的执行顺序,可以查看顺序和范围属性;更多信息请点击此处: 另外,如果我可以简单地用[AuthExtend]装饰我的操作方法,为什么我需要将扩展添加到全局过滤器列表中 这取决于你想做什么。您的全局筛选器将对所有操作执行。通常,您只会使用扩展属性,我不明白为什么您会同时使用这两个属性。 不确定自定义筛选器是如何实现的,身份验证是如何设置的,但在全局注册筛选器后,用户将如何登录(因为他们需要获得访问登录页面的授权) 我认为最好是使用自定义过滤器,并根据需要将其添加到控制器和/或操作的顶部 对于较新的MVC应用程序,我们不应该扩展Authorize属性,而是应该使用新的基于策略的授权,这也是事实吗 我不认为基于策略的授权和创建自定义操作过滤器是相互排斥的