2015-06-25 24 views
7

Lavorando su un progetto MVC5, ho accesso all'account/pagina di accesso. Quando inserisco credenziali errate mi dice che username/password non sono corretti. Quando inserisco le credenziali giuste, mi reindirizza a home/index, quindi presumo che il login abbia funzionato.Errore HTTP 401.0 - IIS non autorizzato 8

In ogni caso, quando arrivo alla nuova pagina ottengo il seguente errore. Errore HTTP 401.0 - Non autorizzato.

Ant non sono sicuro di come potrei andare avanti e risolvere questo.

mio Entrata controller

public ActionResult LogIn() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult LogIn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     if (MembershipService.ValidateUser(model.UserName, model.Password)) 
     { 
      FormsService.SignIn(model.UserName, model.RememberMe); 
      if (!String.IsNullOrEmpty(returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       return RedirectToAction("Index", "Home"); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
     } 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

E il mio modello

public class LogOnModel { 
    [Required] 
    [DisplayName("User name")] 
    public string UserName { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    [DisplayName("Password")] 
    public string Password { get; set; } 

    [DisplayName("Remember me?")] 
    public bool RememberMe { get; set; } 
} 

public interface IFormsAuthenticationService { 
    void SignIn(string userName, bool createPersistentCookie); 
    void SignOut(); 
} 

public class FormsAuthenticationService : IFormsAuthenticationService { 
    public void SignIn(string userName, bool createPersistentCookie) { 
     if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); 

     FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); 
    } 

E durare il mio web.config:

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
    <add name="SaleswebEntities" connectionString= 
    </connectionStrings> 
    <system.web>   
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
    </authentication> 

    <membership> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 

    <profile> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     </providers> 
    </profile> 

    <roleManager enabled="false"> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    </system.webServer> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

    <appSettings> 
    <add key="ClientValidationEnabled" value="false" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="false" /> 
    </appSettings> 
</configuration> 

La stringa di connessione non è vuota, ma ho fatto rimuoverlo Non voglio che sia pubblicato pubblicamente.

+0

Si prega di mostrare il codice dall'azione e dal controller.Il fatto di essere reindirizzati non significa che tu sia autenticato. – Kamo

+0

@Kamo scusa per quello, ho aggiornato il mio post. –

+0

Cosa fa il metodo 'FormsService.SignIn()'? – Kamo

risposta

2

Ho avuto un problema simular e niente fosse con il codice, qualcosa è accaduto con i miei IIS e ho dovuto reinstallarlo. La cosa fondamentale qui è assicurarsi di disinstallare il servizio di attivazione del processo di Windows o altrimenti il ​​tuo ApplicationHost.config sarà ancora in giro.

0

Ho notato che si utilizza FormsService nel controller di accesso. Penso che questa classe sia specifica per SharePoint. Vorrei raccomandare l'uso di WebSecurity.Login() o FormsAuthentication.Authenticate().

+0

Non è il servizio proprietario di @Joakim Carlsson come definito in "IFormsAuthenticationService"? – jolySoft

+0

C'è anche quello. Buon punto :) –

0

Avete controllato che Startup.cs abbia configurato correttamente l'applicazione?

Non ci dovrebbe essere qualcosa di simile a quanto segue in là:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Account/Login"), 
       Provider = new CookieAuthenticationProvider 
       { 
        // Enables the application to validate the security stamp when the user logs in. 
        // This is a security feature which is used when you change a password or add an external login to your account. 
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
         validateInterval: TimeSpan.FromMinutes(30), 
         regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
       } 
      }); 
0

suona come un'edizione IIS permesso, si dovrebbe provare a eseguire VS come amministratore se non l'hai già.

"Errore HTTP 401.0 - Non autorizzato Non si dispone dell'autorizzazione per visualizzare questa directory o pagina".

Diagnose 401.x HTTP errors on IIS

cercare di assicurarsi che le autorizzazioni siano corrette per le cartelle. Fare doppio clic sulla funzionalità di autenticazione in IIS. Fare clic con il tasto destro del mouse sul provider "Anonymous Authentication" e selezionare Modifica. Ora, fare clic con il tasto destro del mouse sull'applicazione Web nel riquadro di sinistra, selezionare Modifica autorizzazioni ..., selezionare la scheda Protezione, fare clic su Modifica -> Aggiungi e aggiungi IIS APPPOOL\NameOfAppPool. Assicurarsi che l'identità del pool di applicazioni abbia letto ed eseguito i permessi della cartella.

Ecco alcuni link.

Configuring IIS (Windows 7) for ASP.NET/ASP.NET MVC 3

http://patrickdesjardins.com/blog/asp-net-mvc-http-error-401-0-unauthorized

https://serverfault.com/questions/348049/iis-and-http-401-0-unauthorized

+0

Ciao ricco, benvenuto allo stack Overflow! Ho ripristinato la tua aggiunta più recente, dal momento che sembra essere poco più di una copia-incolla da un'altra risorsa. Al contrario, preferiamo che le risposte siano adattate alla particolare domanda. Si noti che la risposta, nella sua forma attuale, è perfettamente soddisfacente; hai un +1 da me! – Matt

Problemi correlati