Asp.net Core2.0 过滤器介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Asp.net Core2.0 过滤器介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3859字,纯文字阅读大概需要6分钟。
内容图文
![Asp.net Core2.0 过滤器介绍](/upload/InfoBanner/zyjiaocheng/624/183a42014cc54613ad96b9ae5ff4e456.jpg)
过滤器主要包含:授权过滤器、资源过滤器、Action过滤器、异常过滤器、结果过滤器。
(1)、授权过滤器 (Authorize):主要用于确定当前用户的请求是否合法。
A、在 Startup.cs ConfigureServices方法中需要添加权限认证
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); //添加权限认证 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie( CookieAuthenticationDefaults.AuthenticationScheme, o => { o.LoginPath = new PathString("/Login/Index"); }); }
B、在 Configure 方法中启动权限认证 app.UseAuthorization();
C、在 Controller 调用;
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace WebApplication1.Controllers { public class LoginController : Controller { public IActionResult Index() { return View(); } public IActionResult Login() { var token = "abcdefg"; var name = "幸福摩天轮"; //以表单的形式 ClaimsIdentity identity = new ClaimsIdentity("Forms"); identity.AddClaim(new Claim(ClaimTypes.Sid, token)); identity.AddClaim(new Claim(ClaimTypes.Name, name)); ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(identity); //指定 Cookie 的名称 HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,claimsPrincipal); return View(); } [Authorize(AuthenticationSchemes=CookieAuthenticationDefaults.AuthenticationScheme)] public IActionResult Center() { //查看token var sid=User.FindFirstValue(ClaimTypes.Sid); //查看用户名称 var name = User.FindFirstValue(ClaimTypes.Name); return Content(sid+name); } } }
D、实验截图
(2)、资源过滤器 (IResourceFilter):主授权之后的第一个用来处理请求的资源过滤器,也是最后一个接触到请求的过滤器。
A、代码实现主要是继承 Attribute 和 IResourceFilter
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using System; namespace WebApplication1.Filters { public class ResoureFilter : Attribute, IResourceFilter { //在资源请求之后 public void OnResourceExecuted(ResourceExecutedContext context) { throw new NotImplementedException(); } //在资源请求之前 public void OnResourceExecuting(ResourceExecutingContext context) { context.Result = new ContentResult() {Content="执行结束,资源请求失败!" }; } } }
B、使用方式主要是在 IActionResult 上添加特性
[ResoureFilter] public IActionResult Index() { return View(); }
(3)、Action 过滤器 (IActionFilter):包装了对单个 action 方法的调用,可以将参数传递给 action 并从中获得 action result 。
A、代码实现,主要是继承 IActionFilter 同时实现 OnActionExecuted 和 OnActionExecuting 方法
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using System; namespace WebApplication1.Filters { public class ActionFilter : Attribute, IActionFilter { //在 Action 执行之后 public void OnActionExecuted(ActionExecutedContext context) { throw new NotImplementedException(); } //在 Action 执行之前 public void OnActionExecuting(ActionExecutingContext context) { context.Result = new ContentResult() { Content = "执行结束,您没有请求该方法的权限!" }; } } }
B、使用方式,主要是在 Action 上添加 ActionFilter 特性
[ActionFilter] public IActionResult Index() { return View(); }
(4)、异常过滤器 (ExceptionFilterAttribute):为 MVC 应用程序未处理异常应用全局策略。
A、代码实现,主要是继承 IExcetionFilter 类,并且实现接口的方法。
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using System; namespace WebApplication1.Filters { public class ExceptionFilter : Attribute, IExceptionFilter { public void OnException(ExceptionContext context) { context.Result = new ContentResult() { Content = "执行结束,系统发送错误!" }; } } }
B、使用方式
public IActionResult Index() { throw new System.Exception("系统发生故障"); }
(5)、结果过滤器 (ResultFilterAttribute):包装了单个的 action result 的执行,并且仅当 action 方法成功执行完毕后方才运行。它们是理想的围绕视图执行或格式处理的逻辑。
内容总结
以上是互联网集市为您收集整理的Asp.net Core2.0 过滤器介绍全部内容,希望文章能够帮你解决Asp.net Core2.0 过滤器介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。