我使用的是微软AspNet。DNX RC1中的Identity 3.0框架。在一些教程的帮助下,我构建了一个自定义身份验证系统。密码检查成功后,将为用户创建一些声明,并将设置身份验证:
var claimsPrincipal = await SignInManager.CreateUserPrincipalAsync(user);
if (claimsPrincipal != null && claimsPrincipal.Identity != null)
{
// Set the claims to the user
await HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
return RedirectToAction("Index", "App");
}
登录后,我的浏览器有两个cookie:
.AspNet.Cookies公司
和
.AspNet.Microsoft。AspNet。标识。应用程序
然而,我现在的身份确实有问题。注有[Authorize]的控制器根本不执行。使用[AllowAnonymous]的控制器会给我一个NullReferenceException,因为User。标识为空:
[AllowAnonymous]
[Route("api/trips")]
public class TripController : Controller
{
[HttpGet("")]
public JsonResult Get()
{
var trips = _repository.GetUserTripsWithStops(User.Identity.Name);
...
return Json(results);
}
有人能告诉我我的身份验证有什么问题吗?
我猜我的错误在创业公司的某个地方。cs文件-这里是配置方法:
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseIdentity();
app.UseCookieAuthentication(options =>
{
options.LoginPath = new PathString("/App/Login");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "App", action = "Index" });
});
}