1

尝试使用 ServiceStack 进行身份验证,并将其重定向到登录页面,如下所示:

Plugins.Add(new AuthFeature(
            () => new CustomUserSession(), //Use your own typed Custom UserSession type
            new IAuthProvider[] {
                new CredentialsAuthProvider(),              //HTML Form post of UserName/Password credentials
                new TwitterAuthProvider(appSettings),       //Sign-in with Twitter
                new FacebookAuthProvider(appSettings),      //Sign-in with Facebook
                new DigestAuthProvider(appSettings),        //Sign-in with Digest Auth
                new BasicAuthProvider(),                    //Sign-in with Basic Auth
                new GoogleOpenIdOAuthProvider(appSettings), //Sign-in with Google OpenId
                new YahooOpenIdOAuthProvider(appSettings),  //Sign-in with Yahoo OpenId
                new OpenIdOAuthProvider(appSettings),       //Sign-in with Custom OpenId
            }, "http://www.anyURIhereisignored.com"));

然而,这种情况下的 URI 参数“ http://www.anyURIhereisignored.com ”被简单地忽略了。

查看 AuthFeature 的类定义,我看到 htmlRedirect 参数被声明为可选,默认值为“~/login”,但它似乎总是使用该值并忽略传入的任何内容。似乎虽然htmlRedirect 值最初设置为传递的 URI,不知何故在内部它从不使用它,而是始终默认为“~/login”。还有其他人遇到同样的问题吗?

4

2 回答 2

1

如果您使用的是 MVC4 并且您的控制器根据 ServiceStack 文档从 ServiceStackController<> 继承,那么您可能需要尝试覆盖 LoginRedirectUrl 属性:

public override string LoginRedirectUrl
{
    get { return "/Account/Login?redirect={0}"; }
}

这会将任何未经身份验证的安全操作请求重定向到由指定值组成的登录 url。

如果要在 MVC 中使用 ServiceStack 身份验证,还应确保从 web.config 中删除 ASP.NET 成员模块。

于 2013-08-08T00:32:08.507 回答
1

我有一个自定义 URI 设置为“~/account”,它工作正常。我尝试将其更改为 google,结果如您所愿:

https://www.google.co.uk/?redirect=http://localhost/secure

您是否覆盖了指示需要身份验证的属性中的重定向,即。

[Authenticate(ApplyTo.All,"~/login")]

?

于 2013-08-07T20:55:17.090 回答