2016-03-13 37 views
3

我見過自動登錄用於調試ASP.NET MVC 5

ASP.NET forms authentication - auto login with a test account while debugging?

ASP.NET site auto-login during development

但那是針對舊版本的ASP.NET MVC的(見帖日期)

我試過添加

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

對於gl obal.aspx,但沒有運氣。登錄頁面仍然觸發。我嘗試添加在登錄檢查,並在頁面加載從未

public ActionResult Login(string returnUrl) 
{ 
    if (System.Diagnostics.Debugger.IsAttached && User.Identity.IsAuthenticated == false) 
    { 
     var x = new LoginViewModel() { Email = "[email protected]", Password = "Pa55w0rd!", RememberMe = false }; 
     Login(x, returnUrl).Wait(); 
     return View(x); 
    } 

    ViewBag.ReturnUrl = returnUrl; 
    return View(); 
} 

,但是當我瀏覽到一個頁面需要認證,網頁加載無限期(如果我調試它擊中SignInManager.PasswordSignInAsync()和永遠不會返回(在的AccountController autogenned代碼)。

任何想法有什麼辦法做到這一點的ASP.NET MVC 5?

+0

你可以做到這一點無需在你的代碼做任何修改,只是webconfig變化和一個示例應用程序登錄就足夠了。如果此解決方案對您可行,我可以分享更多詳細信息 –

回答

1

在你的HomeController或任何你會希望您的默認起始URL是

 
#if DEBUG 
     public async Task AutoLogin() 
     { 

      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       var controller = DependencyResolver.Current.GetService(); 
       controller.InitializeController(Request.RequestContext); 
       return await controller.Login(new LoginViewModel() { Email = "[email protected]", Password = "passwordHere", RememberMe = false }, "/Home/Index"); 
      } 

      return Content("Not debugging"); 
     } 
#endif 

和修改您的AccountController包含

 
using System.Web.Routing; 

 
#if DEBUG 
     public void InitializeController(RequestContext context) 
     { 
      base.Initialize(context); 
     } 
#endif 

這個代碼將只包括了調試版本以及。

剛剛測試過它,應該可以正常工作。享受:)

0

這沒有爲我直接工作我需要修改亞當斯回覆這個。即時通訊使用VS2013和MVC 5.

更改自動登錄的簽名是:(注意任務後的新 '的ActionResult')

public async Task<ActionResult> AutoLogin() 

需要依賴解析器線改成這樣:

AccountController controller = (AccountController) DependencyResolver.Current.GetService(typeof (AccountController)); 

我也從「Home \ Index」中將返回URL更改爲簡單的「Home」,但不確定這是否有所作爲。 (「不調試」);最後,我改變了:返回內容(「不調試」);對此:

return View("Index"); 

希望這可以幫助別人。這對我來說很有用。 Cheers.Jon

0

這是爲我做了什麼;很簡單:

public ActionResult Login() 
{ 
    if (System.Diagnostics.Debugger.IsAttached) 
    { 
    var controller = DependencyResolver.Current.GetService<AccountController>(); 
    controller.ControllerContext = new ControllerContext(this.Request.RequestContext, controller); 
    return controller.Login("toddmo","abc123"); 
    } 
    return View(); 
}