2009-07-01 37 views
8

Tôi có một ứng dụng web sử dụng thành viên asp.net và các nhà cung cấp vai trò để cho phép đăng nhập là thành viên của các vai trò nhất định để có quyền truy cập vào các trang khác nhau tùy thuộc vào nhiệm vụ vai trò.Xác thực mẫu ASP.NET - tự động đăng nhập bằng tài khoản thử trong khi gỡ lỗi?

Trong khi gỡ lỗi, tôi muốn ứng dụng đăng nhập tự động bằng tài khoản thử nghiệm, vì vậy tôi có thể kiểm tra chức năng của nhiệm vụ vai trò và không phải nhập thông tin đăng nhập trên trang đăng nhập mỗi lần. Có cách nào làm dễ hơn không?

+0

Bạn nên chấp nhận [câu trả lời] (http://stackoverflow.com/a/3265562/284240). –

Trả lời

3

Mã này thực hiện công việc. Trong Page_Load sự kiện Login.aspx của:

Membership.ValidateUser("<userName>", "<password>") 
    FormsAuthentication.RedirectFromLoginPage("<userName>", True) 

MSDN Documentation

Lưu ý: Membership sử dụng System.Web.Security tham khảo.

0

Bạn có thể đặt mã trong sự kiện tải để đặt chuỗi tên người dùng và mật khẩu và kích hoạt sự kiện onclick của nút đăng nhập không?

0

Là một giải pháp thay thế, cũng có các công cụ như Selenium IDE, một plugin dành cho Firefox. Mục đích chính của nó là cung cấp một số loại thử nghiệm cho UI. Với mục đích này, bạn có thể ghi lại các hành động được thực hiện trên giao diện người dùng. Những gì bạn có thể làm là ghi lại thông tin đăng nhập bạn nhập cho người dùng thử một lần và lưu chúng. Lần sau khi bạn quay trở lại, bạn thực thi kịch bản tự động điền vào các thông tin cần thiết.

Có các công cụ khác chuyên dùng cho mục đích tự động điền biểu mẫu trên trang web. Selenium được coi là một môi trường thử nghiệm, nhưng tôi cũng đã sử dụng nó cho những mục đích như vậy. Tất nhiên đây chỉ là một cách giải quyết.

0

Trong trường hợp Page_Load bạn có thể sử dụng FormsAuthentication.SetAuthCookie:

FormsAuthentication.SetAuthCookie("username", false); 
+0

Tôi đã thử phương pháp này nhưng trang đăng nhập vẫn bị vấp. – CharlieG

2

Trong phương pháp Application_AuthenticateRequest (aka Applications kiện AuthenticateRequest) trong file Global.asax, thêm mã để kiểm tra nếu bạn đang chạy các trang web bên trong trình gỡ rối (một cái gì đó giống như system.Diagnostics.Debugger.IsAttached) và, nếu bạn có, hãy tạo nó trong vé đăng nhập, tạo cookie và đính kèm nó vào phiên. Thư viện FormsAuthentication cung cấp những gì bạn cần nếu trình kích hoạt thành viên hte không có nó.

11

Jeff là đúng, bạn có thể làm điều đó phương pháp global.asax máng:

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    if(System.Diagnostics.Debugger.IsAttached && User == null) 
    { 
     FormsAuthentication.SetAuthCookie("dmike", false); 
    } 
} 

cổ vũ

+0

Hầu như ở đó; Tôi được xác thực, nhưng trang Login.aspx vẫn bị vấp và nhắc tôi về thông tin đăng nhập. – CharlieG

+0

Trang đăng nhập của bạn có phải là trang mặc định không? Bởi vì đó là những gì tôi nghĩ rằng đó là một vấn đề ... cố gắng thiết lập một số trang khác như mặc định và thiết lập xác thực để chuyển hướng đến trang đăng nhập chỉ khi người dùng không được xác thực ...cheers – Marko

+0

Trang mặc định được đặt thành trang tôi đang làm việc (không phải login.aspx). – CharlieG

0

Các FormsAuthentication.RedirectFromLoginPage sử dụng defaultUrl để quyết định nơi để chuyển hướng sau khi đăng nhập. Vì vậy, hãy chắc chắn, bạn có một url hợp lệ khác với LoginPage.aspx của bạn được xác định.

FormsAuthentication.RedirectFromLoginPage("userName", True); 

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login.aspx" 
       ... 
       defaultUrl="~/AnyFolder/PageAfterLogin.aspx" 
       ... /> 
</authentication> 

Tôi hy vọng điều này sẽ giúp ích một chút.

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