簡體   English   中英

System.Web.HttpContext.Current.User.Identity.Name 給出其他用戶的名字

[英]System.Web.HttpContext.Current.User.Identity.Name giving other user's name

我正在為使用 MVC 4.0 開發的 intr.net 應用程序使用 windows 身份驗證。

使用以下代碼獲取當前用戶。

string userid = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToUpper();

在 Web.config 文件中,我設置身份驗證mode="Windows" ,並在 IIS 中啟用 Windows 身份驗證並禁用匿名。

它在本地工作正常但是當我將應用程序部署到 windows 服務器 2012 和 IIS 8.5 時,我面臨兩個我無法解決的問題。

第一個問題是當用戶在他們的機器上瀏覽應用程序時,他們應該登錄用戶,這對一個用戶來說很好。 但是假設兩個用戶同時瀏覽 url 它顯示兩個用戶相同的名字,它是隨機的並且顯示兩個用戶的任何一個的名字。 我沒有在我的整個應用程序中使用 session 或緩存或 cookies。

第二個問題是用戶隨機獲取憑據彈出窗口,當他們提供正確的用戶名和密碼時,它不起作用。問題完全是隨機的,不確定他們何時獲得。

請求你幫助解決這些問題,我嘗試了很多但沒有找到任何解決方案。

這似乎不是從中獲取用戶信息的正確位置。

using System.Web;
//...
var name = System.Web.HttpContext.Current.User.Identity.Name
//...

試試這個。

為同時訪問應用程序的多個用戶顯示相同用戶名的第一個問題可能是由於WindowsIdentity.GetCurrent()方法返回當前線程的標識,而不是當前用戶的標識。 在 web 應用程序中,多個用戶可能同時訪問該應用程序,並且每個用戶可能在不同的線程上運行。 要解決此問題,您可以嘗試使用 HttpContext class 的 User 屬性來獲取當前用戶的身份,如下所示:

string userid = System.Web.HttpContext.Current.User.Identity.Name.ToUpper();

輸入正確的用戶名和密碼時隨機彈出憑據的第二個問題可能是由於在 IIS 中配置 Windows 身份驗證的方式存在問題。

確保為 Windows 身份驗證正確配置了 IIS 服務器,並且已將正確的用戶帳戶添加到服務器。

除此之外,您還可以檢查服務器的事件查看器日志中是否有任何相關的錯誤消息,這些消息可以幫助您確定問題的確切原因。

檢查IIS 服務器身份驗證設置以及面臨問題的用戶的瀏覽器設置會很有幫助。 也有可能是域身份驗證存在問題,這可能會導致問題。

如果您的站點確實沒有緩存任何內容,並且您已經適當地設置了無緩存標頭,那么它可能是一個緩存代理服務器。

暫無
暫無

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

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