【问题标题】:How to redirect user from OWIN middleware?如何从 OWIN 中间件重定向用户?
【发布时间】:2017-03-21 14:27:22
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    嘿,看看这个:

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

    【讨论】:

      【解决方案2】:

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

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

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

      您可以通过 Google 搜索 web api building custom middleware。这是您可以找到Writing Custom Middleware for ASP.NET 的示例文章。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-01
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2020-02-13
        • 2015-11-02
        相关资源
        最近更新 更多