当前位置:首页 >> 偏方秘方 >> 「WebView2实践」开发桌面开发框架之拦截器ActionFilter做到

「WebView2实践」开发桌面开发框架之拦截器ActionFilter做到

发布时间:2023-04-26

在asp.net mvc中的的我们经常用到的ActionFilterAttribute花钱请拦阻,而且也非常好用,那么在我们的框架中的怎么自己意味着拦阻器功能性呢?

说是意味着的思路也很简便,在上一篇评论,我们介绍为了让光线新技术命令行Controller中的的的Action(方式)拦阻器就是在Action命令行在此之前,对请花钱实验者,也就是说才迟至命令行Action,否则终止程序在。拦阻器要意味着一个实验者方式,返国FilterResult具体来说,如果结果是Passed确信实验者通过,则之前命令行Action,否则不命令行。

上面来看明确意味着文档,首先假定FilterResultType数组和FilterResult类

文档很简便,不需要解释吧。

接着编写IActionFilter接口ActionFilterAttribute类

BeforeInvoke方式接受三个参数context,controller,action,context是请的上下文具体来说,controller是被请的Controller具体来说,action就是明确的方式。这是一个隐方式,明确要看继承类型的意味着。ActionFilterAttribute的应用目标是类和方式,所以可以对某个Action花钱拦阻,也可以对整个Controller(接口)花钱拦阻。

好了,拦阻器的基础已经打好了,上面我们来花钱一个明确的拦阻器,来拦阻不曾指定用户的请,取个人名吧RequiredLoginAttribute

在RequiredLoginAttribute中的我们简便推断context.CurrentUser具体来说,不为null则指出已指定返国PassedResult,否则为不曾指定,返国RedirectResult回传结果,程序在将被回传到views/login.html关键字让指定。

上面贴User类和App类的文档

到这中的的,用户拦阻器就已完成了!但是拦阻器要怎么与此相反呢?在在此之前面的评论,我们明白Action的命令行是由Controller的InvokeAction方式督导的,所以,拦阻器要与此相反也不该在那中的的。

在更改InvokeAction之在此之前,我们先给Action添加上RequiredLoginAttribute。在XUI.App中的新建Controllers编目,在此编目下新建一个Controller,IndexController,中的的边有一个Action人名为Dashboard,给他应用上RequiredLoginAttribute,文档如下

再新建一个LoginController,不应用RequiredLoginAttribute

由文档可见,当实验者用户名和攻击者成功后,我们给AppContext.Instance.CurrentUser赋值(此处AppContext为App别称)

再在views编目中的的创建者两个View:dashboard.html和login.html

好了,我们来更改InvokeAction方式

红色方框中的,我们分别复制到Controller和Action上的ActionFilterAttribute,此时复制到到的对应的程序中不该是RequiredLoginAttribute类型,命令行程序中的BeforeInvoke方式,BeforeInvoke返国FilterResult具体来说,指出实验者的结果。如果FilterResult的Type不是Passed,则InvokeAction直接return此FilterResult,那么墙边的确实命令行Action的文档就不但会被督导了,所以能起到拦阻的依赖性。

CustomWebView2.Native.SolveMessage方式再花钱下缩减

更改Form1.cs,将首次启动时页更名views/dashboard.html

这样,程序在一运行,就但会启动时dashborad.html,此时但会进行拦阻实验者,接着但会跳转到login.html花钱指定,指定已完成后再带入dashborad.html页就短时间看出了。

演示截图

截图启动时中的...贵阳甲状腺医院哪最好
江中多维元素片怎么吃
再林阿莫西林颗粒对儿童扁桃体炎有效吗
南京妇科专科医院哪个好
深圳妇科医院排名
友情链接: