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

时间:2017-03-21 14:27:23

标签: c# asp.net owin owin-middleware

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

我希望将B与我的自定义状态代码一起投放,并通过将web配置的A部分与我的错误页面链接来处理它。但是,我无法以这种方式使用自定义状态代码,并且在我的情况下使用现有代码之一是个坏主意。

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

2 个答案:

答案 0 :(得分:3)

嘿看看这个:

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中检查truthy的代码,如果是,我将创建一个新的OWIN语境并在那里进行重定向。 我还可以指定重定向状态代码:301/302。但没有它,上面的代码也可以正常工作

答案 1 :(得分:0)

您应该能够将response code303 See Other)设置为中间件中的response对象,并将location标头设置为您要重定向用户的位置。< / p>

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

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

您可以谷歌搜索web api building custom middleware。以下是您可以找到Writing Custom Middleware for ASP.NET的示例文章。