首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么创建自定义AuthorizeAttribute时base.IsAuthorized总是返回false?

创建自定义AuthorizeAttribute时,base.IsAuthorized总是返回false的原因可能有以下几种:

  1. 未正确重写IsAuthorized方法:在自定义AuthorizeAttribute中,需要重写IsAuthorized方法来实现自定义的授权逻辑。如果未正确重写该方法,那么base.IsAuthorized将会返回false。确保在重写IsAuthorized方法时,根据自己的授权需求进行逻辑编写。
  2. 未正确配置授权策略:在使用自定义AuthorizeAttribute时,需要在应用程序的配置文件或Startup类中正确配置授权策略。如果授权策略配置不正确,那么base.IsAuthorized也会返回false。确保在配置授权策略时,将自定义AuthorizeAttribute与相应的授权策略进行关联。
  3. 未正确设置控制器或动作方法的授权属性:在使用自定义AuthorizeAttribute时,需要将其应用到控制器或动作方法上,以触发授权逻辑。如果未正确设置控制器或动作方法的授权属性,那么base.IsAuthorized同样会返回false。确保在需要进行授权的控制器或动作方法上,添加正确的授权属性。

总结起来,创建自定义AuthorizeAttribute时base.IsAuthorized总是返回false的原因通常是由于未正确重写IsAuthorized方法、未正确配置授权策略或未正确设置控制器或动作方法的授权属性。请检查以上几个方面,确保正确实现自定义的授权逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • ASP.NET MVC5高级编程 ——(6)过滤器

    AuthorizeAttribute和HandleErrorAttribute类,则包含了一些有用的特性,并且可以不必创建派生类进行使用。...创建自定义的授权过滤器 自定义的方法有两种: 创建 AuthorizeAttribute 类的子类 实现 IAuthorizationFilter 接口 创建授权过滤器最简单的办法是创建AuthorizeAttribute...类的子类,AuthorizeAttribute类是系统内建的,通过创建AuthorizeAttribute类的子类实现定义授权过滤器,就是需要重写该类的AuthorizeCore()方法,签名为: bool...当结果过滤器运用于一个动作方法,会在动作方法返回动作结果之前,调用OnResultExecuting方法,在返回动作结果之后,会调用OnResultExecuted方法。...创建自定义的异常过滤器 如果我们对异常过滤器有特殊的需求,可以通过自定义的异常过滤器来完成,创建自定义异常过滤器必须实现IExceptionFilter接口,该接口代码如下: ?

    2.3K40

    .NET实现虚拟WebShell第3课之IAuthorizationFilter

    只读属性AllowMultiple实际上返回的是AttributeUsageAttribute的同名属性,通过上面的定义我们可以看到默认情况下该属性值为False。...3.3 AuthorizeAttribute 微软MVC框架默认提供了AuthorizationFilter实现类AuthorizeAttribute,该类既继承了抽象类FilterAttribute又实现了...会创建一个HttpUnauthorizedResult对象,并赋值给AuthorizationContext的Result属性,意味着会响应一个状态为“401,Unauthorized”的回复。...方法是当授权失败处理的动作 0x04 WebShell 下面笔者将改写OnAuthorization方法,首先我们在站点文件夹下添加一个名为 dotnetofAuthorizeFilter.aspx...对象后解码,另外为了具备命令执行后回显,使用StandardOutput.ReadToEnd读取命令执行后的所有返回数据,代码片段如下 if (content !

    44520

    认识ASP.NET MVC的5种AuthorizationFilter

    get; set; } 13: } AuthorizationContext的ActionDescriptor属性表示描述当前执行Action的ActionDescriptor对象,而Result属性返回一个用于在授权阶段呈现的...CannotCall() 9: {} 三、RequireHttpsAttribute 从名称也可以看出来来,RequireHttpsAttribute这个AuthorizationFilter要求用用户总是以...ValidateRequest { get; set; } 5: } 也正是由于ActionInvoker针对请求输入验证是在完成了所有AuthorizationFilter的执行之后进行的,所以我们可以通过自定义...接下来HtmlHelper会根据之前计算出来的Cookie名称创建一个)HttpCookie对象,而新创建出来的AntiForgeryData对象被序列化后生成的字符串作为该HttpCookie的值。...AntiForgeryToken返回的是一个类型为hidden的元素对应的HTML,该Hidden元素的名称为“__RequestVerificationToken”(即代码访问令牌Cookie

    1.5K60

    Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读

    已经分享了一些应用实战的文章,从架构到授权中心的落地应用,也伴随着对IdentityServer4掌握了一些使用规则,但是很多原理性东西还是一知半解,故我这里持续性来带大家一起来解读它的相关源代码,本文先来看看为什么...return; } 代码中通过endpoint终结点路由来获取是否标注有AllowAnonymous的特性,如果有则直接执行下一个中间件,不进行下面的AuthorizeAsync授权认证方法, 这也是为什么...= null) { return true; } return false; }...代码如下: public interface IFilterFactory : IFilterMetadata { bool IsReusable { get; } //创建...IFilterFactory { public IEnumerable AuthorizeData { get; } //默认构造函数中默认创建

    3.6K20

    ASP.NET Core 6框架揭秘实例演示:基于角色的授权

    如下的代码片段所示,对于成功通过认证的用户,我们会为它创建一个ClaimsPrincipal对象来表示当前用户。...在确定用户通过认证的前提下,我们创建了一个RolesAuthorizationRequirement来表示主页针对授权用户的“角色要求”。...如下面的代码片段所示,在调用AddAuthorization扩展方法注册授权相关服务,我们利用作为输入参数的Action对象对授权策略进行了全局注册。...; [S2804]将“授权策略”绑定到路由终结点 如果在调用AddAuthorization扩展方法已经定义了授权策略,我们也可以按照如下的方式将策略名称设置为AuthorizeAttribute特性大的...注册终结点的各种Map方法会返回一个IEndpointConventionBuilder对象,我们可以安装如下的方式调用它的RequireAuthorization扩展方法将AuthorizeAttribute

    30430

    ASP.NET MVC 过滤器

    在 MVC5 中,将原本的 Authorization 拆分为 Authentication(身份验证)和 Authorization(授权)两个,MVC 接受到 Web 页面请求,首先将执行所有的...异常处理过滤器 异常处理过滤器,用于当发生异常,进行自定义异步处理,记录日志,跳转页面等。...创建过滤器 首先创建过滤器 MyException.cs,同样的,在 Filter 文件夹下新建一个类,继承自 HandleErrorAttribute 注意:OnException 的 base 特性不能删除...注意: 要使用自定义的异常处理,需要在 web.config中为 system.web添加 节点,开启自定义异常。...配置完成后,我们随便输入一个不匹配的路由,就会返回到我们提前编写好的400页面,并通过 url 暴露出异常的路由信息,而正常的路由请求则不受此影响。

    2K30

    聊一聊Asp.net过滤器Filter那一些事

    自定义 ActionFilterAttribute IActionFilter和IResultFilter 用于进入行为之前或之后的处理或返回结果的之前或之后的处理,比如:用户请求日志详情日志记录 AuthorizeAttribute...实现方式:需要自定义一个类,继承AuthorizeAttribute并重写OnAuthorization,在OnAuthorization中能够获取到用户请求的所有Request信息,其实我们做的所有认证拦截操作.../// 认证授权有两个重写方法 /// 具体的认证逻辑实现:AuthorizeCore 这个里面写具体的认证逻辑,认证成功返回true,反之返回false /// 认证失败处理逻辑...:HandleUnauthorizedRequest 前一步返回 false,就会执行到该方法中 /// 但是,我平时在应用过程中,一般都是在AuthorizeCore根据不同的认证结果,直接做认证后的逻辑处理...自定义过滤器,主要是监控action请求前后,处理结果返回前后的事件。

    1.3K20

    ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

    对于ASP.NET MVC应用程序,通过自定义AuthorizeAttribute,声明能够被灵活的用来对指定的Action 方法授权访问,不像传统的使用角色授权那么单一,基于声明的授权更加丰富和灵活,...这会有一个潜在的问题,在大公司工作时间很长的员工,当他们换部门换工作,如果旧的角色没被删除,那么可能会出现资料泄露的风险。...一个更加直接和灵活的方法是通过创建一个自定义的授权过滤器特性来实现,如下展示: public class ClaimsAccessAttribute:AuthorizeAttribute {...对象中的FindAsync方法,传入ExternalLoginInfo.Login 属性,来获取AppUser对象,如果返回的对象不存在,这意味这这是该用户第一次登录到我们的应用程序中,所以我创建了一个...最后,创建ClaimsIdentity 对象并创建Cookie,让应用程序知道用户已经验证通过了。

    2.3K80

    Asp.Net Core 轻松学-被低估的过滤器

    所以,从执行顺序可以看出,资源管理器的执行优先级总是高于操作过滤器 资源过滤器可以应用于控制器或者操作,然后基于其执行优先级的特点,开发员人员可以在资源过滤器中定义某些静态资源或者缓存直接将数据返回给客户端...异常过滤器 在服务器向客户端写入响应内容之前,如果系统引发了异常,异常过滤器可以捕获该异常,该过滤器作用于全局范围,这也是最常用的过滤器 5.1 创建一个异常过滤器 public class CustomerExceptionFilter...5.5 客户端得到了一个友好的返回值 ?...ResultExecutionDelegate next); } 操作过滤器包含 6 个基础方法,分别是执行前(before)执行后(after),写入结果前(before)写入后(after) 为什么会这样呢...,因为操作过滤器实现的接口中包含了结果过滤器的接口 根据官方的提示,如果你需要重写 ActionFilterAttribute 的方法以处理自定义的业务逻辑,那么 OnActionExecutionAsync

    1.5K40

    Asp.Net Core 轻松学-被低估的过滤器

    所以,从执行顺序可以看出,资源管理器的执行优先级总是高于操作过滤器 资源过滤器可以应用于控制器或者操作,然后基于其执行优先级的特点,开发员人员可以在资源过滤器中定义某些静态资源或者缓存直接将数据返回给客户端...异常过滤器 在服务器向客户端写入响应内容之前,如果系统引发了异常,异常过滤器可以捕获该异常,该过滤器作用于全局范围,这也是最常用的过滤器 5.1 创建一个异常过滤器 public class CustomerExceptionFilter...5.5 客户端得到了一个友好的返回值 ?...ResultExecutionDelegate next); } 操作过滤器包含 6 个基础方法,分别是执行前(before)执行后(after),写入结果前(before)写入后(after) 为什么会这样呢...,因为操作过滤器实现的接口中包含了结果过滤器的接口 根据官方的提示,如果你需要重写 ActionFilterAttribute 的方法以处理自定义的业务逻辑,那么 OnActionExecutionAsync

    1.4K20
    领券