#

 
 
Problem:
der User wird beim Aufruf einer Webseite nicht erkannt, obwohl das Login erfolgreich war
Betrifft: Asp.Net Core MVC Anwendung mit WebApi JWT JavaWebToken
 
Ursache:
Wenn man in einer Asp.Net Core 2 MVC Anwendung einen REST Web api Controller einbaut, dann muss man zusätzlich einen JWT Authentity einbauen in der Startup

 
Ursache:
in der startup.cs wird die Authentifizierung über Java-Tokens eingefügt, damit sich externe Programme ohne User-Login auf die WebApi Daten abrufen können
 
Lösung:
Die Reihenfolge der Einbindung in der Startup spielt eine Rolle
-1. Erst den JWT Authentifizierung einbauen
-2. Dann die Standard Microsoft Identity Authentifizierung einbauen
 

//----<1: JWT-Token>----

//*reference:www.blinkingcaret.com

services.AddAuthentication(options=>

{

options.DefaultAuthenticateScheme="JwtBearer";

options.DefaultChallengeScheme="JwtBearer";

})

 

.AddJwtBearer("JwtBearer",jwtBearerOptions=>

{

jwtBearerOptions.TokenValidationParameters=newTokenValidationParameters

{

..

};

});

//----</JWT-Token>----

 

//--<2: Identity>--

services.AddIdentity<ApplicationUser,IdentityRole>(config=>

{

..

})

.AddEntityFrameworkStores<ApplicationDbContext>()

.AddDefaultTokenProviders();

//--</Identity>--
 


 
 
 
 
 
Login Erkennung
Normalerweise wird beim Aufruf einer Seite der aktuelle User in der Views/Shared/_loginPartial.cshtml abgefragt und erkannt
Hierzu wird der SignInManger und UserManager eingebettet und die Abfrage über UserManager.GetUserID(User) ermittelt.

@injectSignInManager<ApplicationUser>SignInManager

@injectUserManager<ApplicationUser>UserManager
..

stringsIDUserGuid=UserManager.GetUserId(User);
 


 
_loginPartial.cshtml

@usingMicrosoft.AspNetCore.Identity

@usingFreelance.Models

@usingFreelance.Data

 

@injectSignInManager<ApplicationUser>SignInManager

@injectUserManager<ApplicationUser>UserManager

 

 

<divstyle="margin-right:0px;margin-left:0px">

<aid="btnMenuLogin"href="javascript:void();"onclick="menu_openclose_Login();">

@{

//--------<GetUser-DefinedInformation>--------

//<getUserGuid>

stringsIDUserGuid=UserManager.GetUserId(User);

//</getUserGuid>

 

if(sIDUserGuid==null)

{

//----<Notloggedin>----

<imgsrc="~/_images/ico/User_Login.png"alt="LoginRegisterasUser"style="padding:0;height:35px"/>

//----</Notloggedin>----

}

else
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Defektes Startup:

//Thismethodgetscalledbytheruntime.Usethismethodtoaddservicestothecontainer.

publicvoidConfigureServices(IServiceCollectionservices)

{

//-----------<ConfigureServices()>-----------

services.AddDbContext<ApplicationDbContext>(options=>options.UseSqlServer(Website_Constants.Connectionstring));

 

//--<FacebookApi>--

 

//--<Identity>--

services.AddIdentity<ApplicationUser,IdentityRole>(config=>

{

//<sendRegisterEmail>

//*preventsregisteredusersfromlogginginuntiltheiremailisconfirmed.

config.SignIn.RequireConfirmedEmail=true;

//</sendRegisterEmail>

})

.AddEntityFrameworkStores<ApplicationDbContext>()

.AddDefaultTokenProviders();

//--</Identity>--

 

//----<JWT-Token>----

//*reference:www.blinkingcaret.com

services.AddAuthentication(options=>

{

options.DefaultAuthenticateScheme="JwtBearer";

options.DefaultChallengeScheme="JwtBearer";

})

 

.AddJwtBearer("JwtBearer",jwtBearerOptions=>

{

jwtBearerOptions.TokenValidationParameters=newTokenValidationParameters

{

ValidateIssuerSigningKey=true,

IssuerSigningKey=Website_Constants._secretKey,

 

ValidateIssuer=true,

ValidIssuer="website_x",

 

ValidateAudience=true,

ValidAudience="webclients_x",

 

ValidateLifetime=true,//validatetheexpirationandnotbeforevaluesinthetoken

 

ClockSkew=TimeSpan.FromMinutes(5)//5minutetolerancefortheexpirationdate

};

});

//----</JWT-Token>----

 

services.AddAuthentication().AddFacebook(facebookOptions=>

{

facebookOptions.AppId=Website_Constants.fp_appID;

facebookOptions.AppSecret=Website_Constants.fp_secret;

});

//--</FacebookApi>--

 

 

//Addapplicationservices.

services.AddTransient<IEmailSender,EmailSender>();

 

varoptRewrite=newRewriteOptions()

.AddRedirectToHttpsPermanent();

 

 

services.AddMvc();

 

//-----------</ConfigureServices()>-----------

}
 


 
Mobile

.

123movies