2012-01-23 36 views
6

Trong ứng dụng MVC của tôi, tôi muốn hiển thị bảng trong tệp cshtml, nếu người dùng đăng nhập hiện tại là một số x người. Tôi đang sử dụng xác thực cửa sổ và tôi đã thực hiện các thay đổi sau trong tệp web.config.Xác thực Windows - Nhận tên người dùng hiện tại

<authentication mode="Windows"> 
     </authentication> 

Và trong bộ điều khiển của mình khi tôi cố gắng truy cập tên người dùng hiện tại, tôi không nhận được bất kỳ tên người dùng nào. Tôi đang thử các cách sau:

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name; 

Dòng trên đây đã hoạt động trước đó. Nhưng bây giờ tôi không biết cái gì sai. Ngoài ra tôi đã lưu trữ ứng dụng của tôi trên IIS ngay bây giờ.

Trả lời

11

Bạn cần đặt thuộc tính [Authorize] trên bộ điều khiển của mình.

Bạn có thể sử dụng User.Identity.Name trong bộ điều khiển của mình.

[Authorize] 
public class YourController : Controller 
{ 

    public ActionResult SomeAction() 
    { 
     var userName = User.Identity.Name; 
    } 
} 
+0

Thanks for the help. Bạn có thể chỉ cho thấy làm thế nào tôi có thể đạt được điều đó. – Jash

+0

@Jash: Đọc bản cập nhật của tôi. – jgauffin

+0

Tôi vừa thay đổi thuộc tính dự án web của mình để sử dụng máy chủ phát triển Asp.Net. Và bây giờ tôi có thể truy xuất nhật ký hiện tại trong tên người dùng. Vì vậy, vấn đề là khi tôi lưu trữ dự án web của tôi trên IIS. Bất kỳ ý tưởng? – Jash

1

Một chút trễ, nhưng điều này có thể phục vụ người khác trong tương lai.

Tôi đã gặp vấn đề tương tự một lần sau khi triển khai trang web của tôi đến máy chủ IIS mới và xác thực ẩn danh đã được bật, vì vậy hãy đảm bảo rằng xác thực ẩn danh bị vô hiệu hóa và nó sẽ hoạt động.

11

Hãy nhìn vào thuộc tính web dự án, cụ thể:

  1. Anonymous Authentication - Đặt để "tàn tật"
  2. Windows Authentication - thiết lập để "Enabled"

Theo mặc định những được đặt ngược lại với những gì bạn có thể đang tìm kiếm.

Web project properties

(Hình ảnh lấy từ MSDN)

Các vấn đề liên quan