2017-08-14 59 views
0

背景標識是在數據庫

我正在一個.net核心API項目帶動一個社區驅動的歌詞網站從編號不同。所以用戶可以提交歌詞&歌詞。每位藝術家都有很多歌詞(經典的一對多)。

對於身份驗證&授權,我正在使用JWT令牌。

CODE

在我的歌詞控制器,我對創造一個抒情的[HttpPost]方法。下面的代碼:一點不

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, DatabaseDataSeeder databaseDataSeeder) 
{ 
    loggerFactory.AddConsole(); 

    app.UseJwtBearerAuthentication(new JwtBearerOptions 
    { 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    TokenValidationParameters = new TokenValidationParameters 
    { 
     ValidIssuer = _config["Tokens:Issuer"], 
     ValidAudience = _config["Tokens:Audience"], 
     ValidateIssuerSigningKey = true, 
     IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"])), 
     ValidateLifetime = true 
    } 
    }); 
    app.UseMvc(); 
    databaseDataSeeder.Seed().Wait(); 
} 

的問題

通過var user = _userManager.GetUserAsync(HttpContext.User);返回的用戶有(int型的)一種ID:

[Authorize] 
[HttpPost("{artistSlug}/lyrics")] 
public async Task<IActionResult> CreateLyric(string artistSlug, [FromBody] LyricCreateDto newLyricCreateDto) 
{ 
    if (newLyricCreateDto == null) return BadRequest(); 
    if (!ModelState.IsValid) return BadRequest(ModelState); 
    var user = _userManager.GetUserAsync(HttpContext.User); 
    var lyricReadDto = await _lyricsService.AddNewLyric(user.Id.ToString(), artistSlug, newLyricCreateDto); 
    if (lyricReadDto == null) return NotFound(); 
    return CreatedAtRoute("GetLyric", new {artistSlug, lyricSlug = lyricReadDto.Slug}, lyricReadDto); 
} 

在我Startup.cs,我有以下匹配dbo.AspNetUsers表中用戶的ID。此外,表dbo.AspNetUsers中的Id列的類型爲Guid

我不知道這是怎麼回事!下面是截圖:

user in code

下面是在SQL Management Studio中對dbo.AspNetUsers查詢:

user in database

這究竟是爲什麼?

回答

5

問題是,您正在查看異步方法的結果,換句話說,一個Task<>,其中Id屬性與您的用戶沒有任何關係。您需要await方法調用:

var user = await _userManager.GetUserAsync(HttpContext.User); 
+1

不錯,你打了我10秒。 – Igor

+0

傻我,謝謝@DavidG – Ciwan

5

你是不是等待任務的結果,所以你實際上並沒有調試/看UserTask對象。添加await關鍵字。

var user = await _userManager.GetUserAsync(HttpContext.User); 
+1

往復:) – DavidG

+0

另外,正確:) – Ciwan

相關問題