4

我有用于身份验证的中间件,需要按类型区分用户是内部用户还是外部用户。在此之后,我想将外部用户重定向到自定义错误页面,因为他们不应该访问我网站的特定部分。

我想抛出HttpResponseException我的自定义状态代码并通过在 web config 部分customErrors与我的错误页面链接来处理它。但是,我不能以这种方式使用自定义状态代码,并且在我的情况下使用现有代码之一是个坏主意。

老实说,我对 OWIN 中间件还很陌生,我什至不知道要谷歌什么。对于如何解决这种情况的提示,我将不胜感激。

4

2 回答 2

4

嘿,看看这个:

public void Configuration(IAppBuilder app)
        {
            ConfigureApp(app);
            //Some other code here
            if (_helper.IsNew())
            {
                Debug.Write("This is a new guy. Redirect him to the setup page permanently");

                var ctx = new OwinContext();
                ctx.Response.Redirect("/Setup");//This is how I redirect from Startip.cs

            }            

        }

观察我在 IF 中检查的代码是否为真,如果为真,我将创建一个新的 OWIN CONTEXT 并在那里进行重定向。我还可以指定重定向状态码:301/302。但是没有它,上面的代码也可以正常工作

于 2017-05-12T11:02:06.467 回答
0

您应该能够将response code( 303 See Other)设置response为中间件中的对象,并将location标头设置为要将用户重定向到的位置。

当您根据您的业务逻辑执行此操作时,您不应调用next函数,并且用户将被重定向到新位置(如果堆栈中没有其他中间件会更改响应)。

记得在 web api 或 mvc 之前注册你的中间件。

你可以谷歌搜索web api building custom middleware。这是一篇示例文章,您可以找到为 ASP.NET 编写自定义中间件

于 2017-03-21T14:43:45.650 回答