我通过GoogleOpenIdOAuthProvider验证用户身份。我需要访问登录用户的电子邮件地址。我试图按原样实施Using Typed Sessions in ServiceStack代码。
所以,我创建了一个我的服务继承自的基类:
public abstract class AppServiceBase : Service
{
//private CustomUserSession userSession;
protected CustomUserSession UserSession
{
get
{
return base.SessionAs<CustomUserSession>();
}
}
}
public class CustomUserSession : AuthUserSession
{
public string CustomId { get; set; }
}
该服务具有[Authenticate]
属性。在我的AppHost设置中,我已经像这样配置了auth:
Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[] {
new GoogleOpenIdOAuthProvider(appSettings) //Sign-in with Google OpenId
}));
用户进行身份验证后,服务会尝试从基类访问auth会话,如下所示:
var x = base.UserSession.Email;
但是,电子邮件始终为null
。如何访问此值?
答案 0 :(得分:3)
您需要从AuthProvider中提取数据并在CustomUserSession中设置值。 SocialBootstrapApi示例
中显示了一个示例覆盖OnAuthenticated,找到GoogleOpenIdOAuthProvider以转到电子邮件地址。