ASP.NET l'Identité dans une Web API

Je suis en train de travailler sur une application simple qui utilise la nouvelle ASP.NET d'Identité pour l'authentification. Depuis que j'ai l'intention d'avoir une application mobile dans l'avenir, j'ai placé l'authentification dans une Web API, je poste à partir de jQuery à partir d'un Rasoir de la Page Web (pas de MVC ou Formes). Jusqu'à présent, la poste fonctionne très bien et permet de créer des utilisateurs et enregistre - le sur l'API côté.

Cependant, je ne suis pas en mesure de déterminer comment procéder à partir de là. J'ai besoin de IsAuthenticated afin que je puisse servir les pages de droite, mais il renvoie toujours false. Puisque l'Identité est extrêmement nouveau, il y a très peu de documentation disponible pour elle et je ne suis pas en mesure de localiser quelque chose d'aussi complexe que de l'exécuter à partir d'une API Web.

Q: Quelle est la bonne façon de revenir à partir de l'authentification de l'Identité dans une API Web après la connexion de sorte que User.Identity.IsAuthenticated obtient-elle correctement réglée?

De connexion.cshtml

@if (User.Identity.IsAuthenticated)
{
    @RenderPage("/userpage.cshtml");
}

else
{
    <form id="loginForm">
        <b>Login</b>
        <input type="email" placeholder="Email" name="email" id="loginEmail" />
        <input type="password" placeholder="Password" name="password" id="loginPassword" />
        <input type="submit" value="Log In"/>
    </form>
 }

<script>
    $("#loginForm").submit(function(event)
    {
        event.preventDefault();
        $.post("/api/login/",
        {
            Username: $('#loginEmail').val(),
            Password: $('#loginPassword').val()
        }, function () 
           { 
               //???
           }, "json");

        return false;
    });
</script>

Login API Web

public class LoginController : ApiController
{
    public async void Post(UserInfo info)
    {
        var manager = new AuthenticationIdentityManager(new IdentityStore());
        var result = await manager.Authentication.CheckPasswordAndSignInAsync(HttpContext.Current.GetOwinContext().Authentication, info.Username, info.Password, true);

        if (result.Success)
        {
            //???
        }
    }
}
peut-être vous pouvez vérifier les échantillons à github.com/rustd/AspnetIdentitySample/tree/master/...
J'ai en effet été l'apprentissage de l'échantillon afin d'obtenir autant que j'ai. Cependant, l'échantillon est en MVC et utilise une redirection post de connexion, ce qui, à mon sens actuel, n'est pas possible dans une API Web parce que c'est un RESTE de l'opération. L'échantillon, pour autant que je peux dire à partir de la version que j'ai il y a quelques jours, ne permet pas de couvrir l'API Web.
pls voir Darin réponse: stackoverflow.com/questions/11014953/...

OriginalL'auteur Dragonseer | 2013-10-11