Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Owin、Katana&;中成功进行cookie身份验证后重定向到ReturnUrl;南希_C#_Authentication_Owin_Nancy_Katana - Fatal编程技术网

C# 在Owin、Katana&;中成功进行cookie身份验证后重定向到ReturnUrl;南希

C# 在Owin、Katana&;中成功进行cookie身份验证后重定向到ReturnUrl;南希,c#,authentication,owin,nancy,katana,C#,Authentication,Owin,Nancy,Katana,我正在使用Owin、Katana和Nancy托管一个简单的站点,其中包含一个需要验证的部分。 注意,我也在使用nuget软件包-Nancy.msowunsecurity app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = Constants.AuthenticationType, LoginPath = new PathString("/Login"), }); ap

我正在使用Owin、Katana和Nancy托管一个简单的站点,其中包含一个需要验证的部分。 注意,我也在使用nuget软件包-Nancy.msowunsecurity

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = Constants.AuthenticationType,
    LoginPath = new PathString("/Login"),
});
app.UseNancy();
这是我的模块代码

public class LoginModule : NancyModule
{
    public LoginModule()
    {
        Post["login"] = p =>
        {
            var name = Request.Form.name;
            var auth = Context.GetAuthenticationManager();
            var claims = new List<Claim> {new Claim(ClaimTypes.Name, name)};
            var id = new ClaimsIdentity(claims, Constants.AuthenticationType);
            auth.SignIn(id);
            // redirect how????
            return View["index"];
        };
    }
}
公共类登录模块:NancyModule { 公共登录模块() { Post[“登录”]=p=> { var name=Request.Form.name; var auth=Context.GetAuthenticationManager(); var claims=new List{new claims(ClaimTypes.Name,Name)}; var id=新的索赔实体(索赔、常量、身份验证类型); 授权签名(id); //重定向如何???? 返回视图[“索引”]; }; } } 我的提交表格

<form name="login" action="/login" method="post" accept-charset="utf-8">
    <ul>
        ...
    </ul>
</form>

    ...
现在我希望在成功登录到ReturnUrl后重定向-

e、 g.登录?返回URL=%2blah%2blahblah


似乎没有像表单身份验证中那样的重定向方法,而且查询字符串参数属性为空。

您是否尝试过
Response.AsRedirect(“/”)
GetRedirect(“/”)打开
NancyContext

使用您的代码示例:

public class LoginModule : NancyModule
{
    public LoginModule()
    {
        Post["login"] = p =>
        {
            var name = Request.Form.name;
            var auth = Context.GetAuthenticationManager();
            var claims = new List<Claim> {new Claim(ClaimTypes.Name, name)};
            var id = new ClaimsIdentity(claims, Constants.AuthenticationType);

            auth.SignIn(id);

            return Response.AsRedirect(p.Request.Query.RedirectUrl);
        };
     }
}
公共类登录模块:NancyModule { 公共登录模块() { Post[“登录”]=p=> { var name=Request.Form.name; var auth=Context.GetAuthenticationManager(); var claims=new List{new claims(ClaimTypes.Name,Name)}; var id=新的索赔实体(索赔、常量、身份验证类型); 授权签名(id); 返回Response.AsRedirect(p.Request.Query.RedirectUrl); }; } }
我可以进行响应。重定向,但无法获取重定向url。GetRedirect和p.RediretUrl不存在。已更新-我使用了路由参数访问器,而不是查询字符串访问器。作为旁注
Context.GetRedirect(p.Request.Query.RedirectUrl)
是实现此目的的GetRedirect方法。请用正确的代码更新代码示例。