但是,我无法确定如何从那里进行.我需要设置IsAuthenticated,以便我可以提供正确的页面,但它总是返回false.由于IDentity是非常新的,因此可以使用很少的文档,因此我无法找到任何像Web API一样运行的任何东西.
问:登录后从Web API中的身份认证返回的正确方法是什么?User.IDentity.IsAuthenticated设置正确?
Login.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) { //??? } }}解决方法 这取决于您使用的身份验证方法.大多数Web应用程序使用Form(cookie)身份验证模块作为主验证方法.它应该适用于您的网页,但如果您想在移动应用程序的本机客户端上使用API,则不是最佳选择.使用web API启用cookie验证时,应该注意CSRF攻击.
假设您正在使用cookie身份验证,您仍然有两个选择.一个是FormsAuthentication IIS模块,这是相当老的,你应该使用FormsAuthentication.SetAuthCookie登录用户.
另一种方式是OWIN cookie middleware,它用于默认的MVC 5模板来支持认证.请检查my answer如何通过OWIN API登录用户
如果您想为移动应用的Web API提供更好的身份验证故障,我建议您使用OWIN OAuth middleware启用承载令牌作为Web API的主要身份验证方法.在MVC 5 SPA模板中,它展示了一起使用它们与MVC和cookie认证一起使用的良好模式.我的博客Understanding Security Features in the SPA Template for VS2013 RC应该总结一下他们如何合作的想法.
身份框架有一个OWIN package,它实现了大部分的OWIN认证码.所以你不需要实现自己的.为什么不使用它?
总结以上是内存溢出为你收集整理的Web API中的ASP.NET身份全部内容,希望文章能够帮你解决Web API中的ASP.NET身份所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)