0

我有一个应用程序已经使用 CredentialsAuthProvider() 运行了一段时间。

今天,我想添加 twitter 和 facebook 作为人们创建帐户的选项。我已经搭好了脚手架。

  //Register all Authentication methods you want to enable for this web app.            
  Plugins.Add(new AuthFeature(() => new AuthUserSession(),
    new IAuthProvider[] {
      new CredentialsAuthProvider(),
      new TwitterAuthProvider(appSettings),
      new FacebookAuthProvider(appSettings)
  }));


  //Provide service for new users to register so they can login with supplied credentials.
  Plugins.Add(new CustomRegistrationFeature());

端点 /api/auth/twitter 和 /api/auth/facebook 工作,我看到一旦 OAuth 过程完成,访问 /api/auth 就会创建一个用户会话但是......

在我的 UserAuthRepository (OrmLiteAuthRepository) 中没有创建用户。会话中存储的用户 ID 无效。任何用 [Authenticate] 属性修饰的方法都会导致返回 404(未找到用户)错误。

我希望使用从 Facebook 或 Twitter 获得的 First/Last/Email 创建用户。我是不是误会了什么?

服务栈 v4.0.38

4

2 回答 2

1

oauth.CallbackUrl考虑到您注册的多个提供商,需要检查的几件事是已正确设置。例如http://localhost/auth/{0}

此外,您应该检查您IDbConnectionFactory使用的OrmLiteAuthRepository是否也已在 IoC 容器中注册。例如

var dbFactory = new OrmLiteConnectionFactory(
    "~/App_Data/db.sqlite".MapHostAbsolutePath(),
    SqliteDialect.Provider);

container.Register<IDbConnectionFactory>(dbFactory);
var authRepo = new OrmLiteAuthRepository(dbFactory);
container.Register<IUserAuthRepository>(authRepo);

authRepo.InitSchema();
于 2015-04-10T02:47:05.413 回答
0

我想更新这个线程,说我已经升级到 ServiceStack 4.0.42,这个问题已经解决了。

于 2015-08-25T15:13:27.193 回答