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