Azure Mobile Apps自定义身份验证

时间:2016-06-16 06:53:37

标签: azure authentication xamarin

我尝试使用MobileServiceClient的LoginAsync(string provider, JObject token)重载来实现自定义身份验证。我有这样的自定义身份验证控制器

[MobileAppController]
public class CustomAuthController : ApiController
{
   public async Task<IHttpActionResult> Post([FromBody] JObject assertion)
  {
    ...
  }
}

并在后端启动内部设置路径

config.Routes.MapHttpRoute("CustomAuth", ".auth/login/CustomAuth",new { controller = "CustomAuth" });

在客户端,电话是:

var credentials = new JObject
{
    ["email"] = username,
    ["password"] = password
};            
MobileServiceUser user;
try
{
    user = await MobileService.LoginAsync("CustomAuth", credentials);
}
catch (Exception ex)
{
    Debug.WriteLine(ex.Message);
    throw;
}

我认为这一切都是正确的但是我不能用LoginAsync方法调用控制器(在调试中我在控制器的第一条指令上设置断点)。 而且我甚至看不到这个例外,因为它从来没有阻止它。 但是我可以使用Postman向CustomAuthController发送请求,例如,在这种情况下达到了调试断点... 我不明白为什么!! 我试图调试LoginAsync(使用MobileServiceTokenAuthentication)反编译代码但没有成功...请帮忙! 在后端,我使用auth0委托api进行自定义身份验证。

1 个答案:

答案 0 :(得分:1)

您需要从控制器代码中删除[MobileAppController]属性。此属性添加了调用包含版本标头的要求,客户端SDK不会为登录方法发送这些调用。或者,您可以使用客户端上的委托处理程序来注入此标头,但服务器端更改将涉及更少的代码。在自定义身份验证的上下文中,该属性不提供我能想到的任何好处,因此应该可以安全删除。