2009-12-15 37 views
5

Có sự khác biệt nào với mạo danh giữa hành động điều khiển ASP.Net MVC so với biểu mẫu Web ASP.Net không? Sử dụng cùng một mã chính xác trong cùng một dự án web, tôi có thể mạo danh thành công người dùng Windows khi kết nối với SQL Server từ một Biểu mẫu Web nhưng không phải từ Hành động điều khiển. Đây là mẫu mã tôi đang thử nghiệm từ mỗi:Mạo danh: Hành động điều khiển ASP.Net MVC so với biểu mẫu web

string sqlQuery = @"SELECT Top 10 FullName FROM Customer"; 

// Connect to the database server. You must use Windows Authentication; 
SqlConnection connection = new SqlConnection("Data Source=ServerName;Initial Catalog=DBName;Integrated Security=SSPI"); 
// Create a DataTable to store the results of the query. 
DataTable table = new DataTable(); 

// Create and configure the SQL Data Adapter that will fill the DataTable. 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = new SqlCommand(sqlQuery, connection); 

// Execute the query by filling the DataTable. 
adapter.Fill(table); 

Tôi đã kiểm tra người dùng HttpContext trên cả bộ điều khiển và biểu mẫu web và chúng trông giống hệt nhau. Tuy nhiên, khi chạy theo dõi SQL, hành động của bộ điều khiển luôn chạy dưới dạng Dịch vụ mạng, trong khi biểu mẫu web đang chạy với tư cách người dùng. Bất kỳ làm rõ về lý do tại sao hai hành vi khác nhau và làm thế nào để mạo danh trong hành động điều khiển sẽ được đánh giá cao.

Trả lời

1

này có thể giúp:

Impersonation in ASP.NET MVC

Tôi cũng nên đề cập mạo danh có thể có ảnh hưởng tiêu cực đến khả năng của bạn để mở rộng ứng dụng của bạn:

http://www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx

+0

Đồng ý, tôi có thể không thực sự nhìn thấy một lý do để sử dụng người dùng mạo danh, trừ khi bạn chỉ đơn giản là không có quyền truy cập để thay đổi quyền db. –

5

cố gắng để thêm

<identity impersonate="true"> 

để

<system.web> 

một phần của tập tin web.config của bạn cho ứng dụng MVC

+0

cảm ơn, điều này làm việc cho tôi! –

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