如何从 OWIN 中间件重定向用户?

How to redirect user from OWIN middleware?

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

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

老实说,我对 OWIN 中间件还很陌生,我什至不确定要做什么 google。我将非常感谢提示如何解决这种情况。

您应该能够将 response code (303 See Other) 设置为 middle-ware 中的 response object 和 location header 到你想重定向用户的地方。

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

记得在 web api 或 mvc.

之前注册您的 middle-ware

您可以 google 获得 web api building custom middleware。这是您可以找到的示例文章 Writing Custom Middleware for ASP.NET.

嘿,看看这个:

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。但如果没有它,上面的代码也可以正常工作