2013-05-23 36 views
7

Tôi có mã sau đây để xác minh xem người dùng có quyền truy cập vào ứng dụng hay không. Sự cố là System.Web.HttpContext.Current.User.Identity.Name trả về trống. Tôi đã kiểm tra. Điều gì có thể là vấn đề? Ứng dụng khác của tôi sử dụng cùng một đoạn mã và nó hoạt động ở đó. Tại sao chuyện này đang xảy ra?Tại sao System.Web.HttpContext.Current.User.Identity.Name trả về một chuỗi rỗng?

string username = System.Web.HttpContext.Current.User.Identity.Name; 
string str = "SELECT LASTNAME +', '+ FIRSTNAME AS NAME, USER_NAME, DEPARTMENT FROM DBNAME.DBO.TABLENAME WHERE USER_NAME = '" + username + "' "; 
SqlCommand cmd = new SqlCommand(str, conn); 
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
if (rdr.HasRows == false) 
{ 

     Server.Transfer("unauthorized.htm"); 
} 
else 
{ 
    while (rdr.Read()) 
    { 
     name = rdr["NAME"].ToString(); 
     username = rdr["USER_NAME"].ToString(); 
     dept = rdr["DEPARTMENT"].ToString(); 
    } 
} 
+0

Mã này có được lấy từ ứng dụng ASP.net không? –

+0

Cả hai ứng dụng có quản lý trạng thái xác thực của riêng mình không? –

+0

có thể mang lại cho chúng tôi web.config của bạn – Aron

Trả lời

5

Có vẻ như bạn có người dùng ẩn danh. Nếu bạn không muốn cho phép người dùng ẩn danh, thêm dòng sau vào web.config:

<system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 
+0

Điều này chỉ cho tôi Lỗi Máy chủ 401 - Không được phép: Truy cập bị từ chối do thông tin đăng nhập không hợp lệ. – Artemis

+3

IIS có được cấu hình để sử dụng xác thực Windows và bạn có '' trong web.config không? – Joe

+0

Có và Có. Điều này thật kỳ lạ. Ứng dụng khác của tôi có cùng mã. Và nó hoạt động tốt ở đó. – Artemis

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