我正在开发一个使用新的 ASP.NET Identity 进行身份验证的简单应用程序。由于我计划将来有一个移动应用程序,因此我将身份验证放在了 Web API 中,我从 Razor 网页(没有 MVC 或表单)从 jQuery 发布到该 API。到目前为止,post 工作正常并创建用户并将他们登录 - 在 API 端。
但是,我无法确定如何从那里开始。我需要设置 IsAuthenticated 以便我可以提供正确的页面,但它总是返回 false。由于 Identity 非常新,因此几乎没有可用的文档,而且我无法找到任何像从 Web API 运行它这样复杂的东西。
问:登录后从 Web API 中的身份验证返回以正确User.Identity.IsAuthenticated
设置的正确方法是什么?
登录.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>
登录 Web API
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)
{
//???
}
}
}