簡體   English   中英

如何從控制器獲取User.Identity.Name?

[英]How to get User.Identity.Name from a controller?

我想在所有視圖中都包含一些viewData信息,因此我正在關注本教程

http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx

因此,我制作了自己的applicationController,但需要從用戶那里獲取UserName。

但是,當我在構造函數中執行“ HttpContext.User.Identity.Name”時,它始終為null。 我不確定為什么。

謝謝

好的,基本的事情就解決了。

  protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        Guid userId = coursesS.GetUserId(HttpContext.User.Identity.Name);
    }

這樣看來可行。 現在唯一的事情是它似乎經歷了兩次。 就像我登錄一樣,它似乎做了兩次。 我正在猜測,因為這就像將代碼放入每個動作中一樣。 當我通過在控制器中調用它們在網站上加載所有這些部分視圖時,便會執行此操作。

太多了,我應該緩存它,但是我不確定如何緩存。

HttpContext.Current.User.Identity.Name  

請注意您的呼叫中缺少的.Current

嘗試初始化ApplicationController的Initialize方法中的內容,但HttpContext在構造函數中不可用。 確保調用base.Initialize(),否則您會得到一些有趣的結果。

您要訪問的哪個特定屬性為null? 您可能需要在檢查Name屬性之前檢查User.Identity.IsAuthenticated == true。 另外,請確保已啟用表單身份驗證,並且您確實確實已經首先登錄了該站點。

采用

Page.User.Identity.Name

您在控制器中,請使用以下命令:

ControllerContext.HttpContext.Current.User.Identity.Name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM