2017-03-16 1 views
1

Ich benutze ASP.net Webformulare, Codierung in VB und plötzlich meine Identität Login/reg funktioniert nicht mehr. Wenn ich mich anmelde, authentifiziert es nicht, dass es angemeldet ist, genauso wie bei der Registrierung. Ich habe Verbindung mit dem SQL.asp net Identität - Login wird nicht korrekt authentifizieren

Login.aspx

<asp:PlaceHolder runat="server" ID="LoginStatus" Visible="false"> 
     <p> 
      <asp:Literal runat="server" ID="StatusText" /> 
     </p> 
       </asp:PlaceHolder> 
       <asp:PlaceHolder runat="server" ID="LoginForm" Visible="false"> 
       <div class="form-group"> 
        <asp:Label runat="server" AssociatedControlID="UserName" CssClass="col-md-2 control-label">User name</asp:Label> 
        <div class="col-md-6"> 
        <asp:TextBox runat="server" ID="UserName" CssClass="form-control" /> 
        </div> 
       </div> 
       <div class="form-group"> 
        <asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">Password</asp:Label> 
        <div class="col-md-6"> 
        <asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" /> 
        </div> 
       </div> 
       <div class="form-group"> 
        <div class="col-md-10 col-md-offset-2"> 
        <asp:Button runat="server" Text="Log in" OnClick="SignIn" CssClass="btn btn-default" /> 
        </div> 
       </div> 
        </asp:PlaceHolder> 
       <asp:PlaceHolder runat="server" ID="LogoutButton" Visible="false"> 
     <div> 
      <div> 
       <asp:Button runat="server" OnClick="SignOut" Text="Log out" CssClass="btn btn-default" /> 
      </div> 
     </div> 
    </asp:PlaceHolder> 

Login.aspx.vb

Imports System.Net 
Imports System.Web  
Imports System.Web.UI 
Imports Microsoft.AspNet.Identity 
Imports Microsoft.AspNet.Identity.EntityFramework 
Imports Microsoft.AspNet.Identity.Owin 
Imports Microsoft.Owin.Security 
Imports Owin 

Partial Public Class Login 
    Inherits Page 
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      If User.Identity.IsAuthenticated Then 
       StatusText.Text = String.Format("Logged in as {0}", User.Identity.GetUserName()) 
       LoginStatus.Visible = True 
       LogoutButton.Visible = True 
      Else 
       LoginForm.Visible = True 
      End If 
     End If 
    End Sub 

    Protected Sub SignIn(sender As Object, e As EventArgs) 
     Dim userStore = New UserStore(Of IdentityUser)() 
     Dim userManager = New UserManager(Of IdentityUser)(userStore) 
     Dim user = userManager.Find(UserName.Text, Password.Text) 

     If user IsNot Nothing Then 
      Dim authenticationManager = HttpContext.Current.GetOwinContext().Authentication 
      Dim userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie) 

      authenticationManager.SignIn(New AuthenticationProperties() With { 
       .IsPersistent = False 
      }, userIdentity) 
      Response.Redirect("Login.aspx") 
     Else 
      StatusText.Text = "Invalid username or password." 
      LoginStatus.Visible = True 
     End If 
    End Sub 
    Protected Sub SignOut(sender As Object, e As EventArgs) 
     Dim authenticationManager = HttpContext.Current.GetOwinContext().Authentication 
     authenticationManager.SignOut() 
     Response.Redirect("~/Home.aspx") 
    End Sub 


End Class 

Vielen Dank für jede Hilfe.

+1

Bitte geben Sie die Fehlermeldung, die Sie –

+0

Das ist das Ding bekommen, ich bin nicht erhalte eine Fehlermeldung, es justs durch authenticationManager.SignIn läuft und gibt null zurück, leitet dann –

+0

Ich bin nicht sicher, was dieses verursacht , Aber man kann dies versuchen. (C#) 'if (User.Identity.IsAuthenticated) { // Verwendung bereits in angemeldet} sonst { var user = userManager.Find (UserName.Text, Password.Text) // Rest deiner Sachen } ' –

Antwort

1
Protected Sub SignIn(sender As Object, e As EventArgs) 
    Dim userStore = New UserStore(Of IdentityUser)() 
    Dim userManager = New UserManager(Of IdentityUser)(userStore) 
    Dim user = userManager.Find(UserName.Text, Password.Text) 

    If user IsNot Nothing Then 
     Dim authenticationManager = HttpContext.Current.GetOwinContext().Authentication 
     Dim userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie) 

     authenticationManager.SignIn(New AuthenticationProperties() With { 
      .IsPersistent = False 
     }, userIdentity) 
     Response.Redirect("Login.aspx") 
    Else 
     StatusText.Text = "Invalid username or password." 
     LoginStatus.Visible = True 
    End If 
End Sub 

Ich würde vorschlagen, Sie debuggen den Code in der SignIn Methode. Ein paar Dinge könnten es wert sein zu überprüfen.

  1. Setzen Sie einen Haltepunkt auf dieser Linie Dim user = userManager.Find(UserName.Text, Password.Text) und sehen, welchen Wert es zurückgeben würde.

  2. Überprüfen Sie, ob die Linie LoginStatus.Visible = True an der richtigen Stelle ist. Für mich sollte es vielleicht außerhalb Ihres If...Else...End If Blocks platziert worden sein. Andernfalls würde nach der Umleitung zur Login.aspx-Seite keine Benutzeroberfläche angezeigt. Ihre Authentifizierung ist möglicherweise in Ordnung, Sie können jedoch keine Hinweise auf der Benutzeroberfläche sehen.

  3. Überprüfen Sie Ihre web.config-Einstellungen, insbesondere im Konfigurationsbereich authentication.

+0

Danke !! Authentifizierung in Webconfig korrigiert –

Verwandte Themen