0
我试图创建一个简单的登录路线和这个代码工作正常登录和发送的cookie到浏览器:ASP.NET身份未授权正确
[Route("Login")]
[AllowAnonymous]
public async Task<IHttpActionResult> Login(UserBindingModel model)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindUserAsync(model.username, model.password);
if (user != null)
{
await SignInAsync(user, true);
return Ok();
}
}
return BadRequest();
}
这里是SignInAsync方法被呼叫:
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
Authentication.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}
这里是我的IdentityConfig:
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new TestUserStore());
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = false,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = false,
};
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"));
}
return manager;
}
public async Task<ApplicationUser> FindUserAsync(string username, string password)
{
var userStore = new TestUserStore();
ApplicationUser user = await userStore.FindByNameAsync(username, password);
return await Task.FromResult(user);
}
}
尽管如此发送cooki e到浏览器正确和身份验证部分工作,每当我打电话给另一个API控制器,我总是得到该请求未经授权。我对身份框架并不是非常熟悉,所以我不知道发生了什么。
你能否包含你的启动验证码? – john
“api方法”,你的意思是ApiController? –
@john identityconfig代码是我的startup.auth代码 –