Skip to content

Commit 003c440

Browse files
committed
chore: #60: tries to fix problem with login middleware dependencies (3)
1 parent 917a788 commit 003c440

6 files changed

Lines changed: 67 additions & 45 deletions

File tree

Examples/Example.NetCore3.1.BaseAuthentication/Startup.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
5151

5252
//app
5353
// .OnLoginExecuting(OnLoginExecuting)
54+
// .UseDefaultLoginMiddleware()
55+
// .OnLoginExecuted(OnLoginExecuted)
56+
// .UseJwtAuthentication();
57+
58+
//app
59+
// .OnLoginExecuting(OnLoginExecuting)
60+
// .OnLoginExecuted(OnLoginExecuted)
61+
// .UseDefaultLoginMiddleware()
62+
// .UseJwtAuthentication();
63+
64+
//app
5465
// .OnLoginExecuted(OnLoginExecuted)
5566
// .UseDefaultLoginMiddleware()
5667
// .UseJwtAuthentication();

JwtAuthentication.Shared/CallbackActionType.cs

Lines changed: 0 additions & 8 deletions
This file was deleted.

JwtAuthentication.Shared/Middlewares/Login/DefaultLoginMiddlewareBuilder.cs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ namespace TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login
99
{
1010
public class DefaultLoginMiddlewareBuilder
1111
{
12-
private static Func<BasicLoginModel, Task> _onLoginExecutingCallback = s => Task.CompletedTask;
13-
private static Func<BasicLoginModel, Task> _onLoginExecutedCallback = s => Task.CompletedTask;
12+
private static Func<BasicLoginModel, Task> _onLoginExecutingCallback = null;
13+
private static Func<BasicLoginModel, Task> _onLoginExecutedCallback = null;
1414
private static BaseLoginEndpointOptions _loginEndpointOptions = new BaseLoginEndpointOptions();
1515

1616
private static bool _loginMiddlewareIsRegistered = false;
@@ -62,9 +62,13 @@ public IApplicationBuilder OnLoginExecuting(Func<BasicLoginModel, Task> callback
6262
{
6363
_onLoginExecutingCallback = callback;
6464
_executingCallbackIsRegistered = true;
65-
ReregisterMiddlewareCallbacks(CallbackActionType.Executing);
6665

67-
return _applicationBuilder;
66+
if (!_loginMiddlewareIsRegistered)
67+
{
68+
return _applicationBuilder;
69+
}
70+
71+
return _applicationBuilder.UseMiddleware<LoginMiddlewareWithExecutingCallback>(_loginEndpointOptions, _onLoginExecutingCallback);
6872
}
6973

7074
/// <summary>
@@ -76,9 +80,13 @@ public IApplicationBuilder OnLoginExecuted(Func<BasicLoginModel, Task> callback)
7680
{
7781
_onLoginExecutedCallback = callback;
7882
_executedCallbackIsRegistered = true;
79-
ReregisterMiddlewareCallbacks(CallbackActionType.Executed);
8083

81-
return _applicationBuilder;
84+
if (!_loginMiddlewareIsRegistered)
85+
{
86+
return _applicationBuilder;
87+
}
88+
89+
return _applicationBuilder.UseMiddleware<LoginMiddlewareWithExecutedCallback>(_loginEndpointOptions, _onLoginExecutedCallback);
8290
}
8391

8492
/// <summary>
@@ -94,16 +102,6 @@ public IApplicationBuilder UseDefaultLoginMiddleware()
94102
return _applicationBuilder;
95103
}
96104

97-
private void ReregisterMiddlewareCallbacks(CallbackActionType callbackActionType)
98-
{
99-
if (!_loginMiddlewareIsRegistered)
100-
{
101-
return;
102-
}
103-
104-
_applicationBuilder.UseMiddleware<LoginMiddleware>(_loginEndpointOptions, _onLoginExecutingCallback, _onLoginExecutedCallback, callbackActionType);
105-
}
106-
107105
private void RegisterMiddleware()
108106
{
109107
var objects = new List<object>() { _loginEndpointOptions };

JwtAuthentication.Shared/Middlewares/Login/LoginMiddleware.cs

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,24 @@ namespace TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login
1111
{
1212
internal class LoginMiddleware : RequestMiddlewareBase<ILoginService, LoginRequestModel, AuthResponseModel>
1313
{
14-
private static BaseLoginEndpointOptions _loginEndpointOptions;
15-
private static Func<BasicLoginModel, Task> _onLoginExecuting = null;
16-
private static Func<BasicLoginModel, Task> _onLoginExecuted = null;
14+
protected static BaseLoginEndpointOptions _loginEndpointOptions;
15+
protected static Func<BasicLoginModel, Task> _onLoginExecuting = null;
16+
protected static Func<BasicLoginModel, Task> _onLoginExecuted = null;
1717

18-
public LoginMiddleware(RequestDelegate next, BaseLoginEndpointOptions loginEndpointOptions, Func<BasicLoginModel, Task> onLoginExecuting = null, Func<BasicLoginModel, Task> onLoginExecuted = null, CallbackActionType? callbackActionType = null)
18+
public LoginMiddleware(RequestDelegate next, BaseLoginEndpointOptions loginEndpointOptions, Func<BasicLoginModel, Task> onLoginExecuting = null, Func<BasicLoginModel, Task> onLoginExecuted = null)
1919
: base(next)
2020
{
2121
_loginEndpointOptions = loginEndpointOptions;
22-
23-
if (callbackActionType == null)
24-
{
25-
if (onLoginExecuting != null)
26-
{
27-
_onLoginExecuting = onLoginExecuting;
28-
}
29-
30-
if (onLoginExecuted != null)
31-
{
32-
_onLoginExecuted = onLoginExecuted;
33-
}
34-
}
35-
36-
if (callbackActionType == CallbackActionType.Executing)
22+
23+
if (onLoginExecuting != null)
3724
{
3825
_onLoginExecuting = onLoginExecuting;
3926
}
4027

41-
if (callbackActionType == CallbackActionType.Executed)
28+
if (onLoginExecuted != null)
4229
{
4330
_onLoginExecuted = onLoginExecuted;
44-
}
31+
}
4532
}
4633

4734
public async Task InvokeAsync(HttpContext context, ILoginService loginService)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.AspNetCore.Http;
4+
using TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login.Models;
5+
using TourmalineCore.AspNetCore.JwtAuthentication.Shared.Options;
6+
7+
namespace TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login
8+
{
9+
internal class LoginMiddlewareWithExecutedCallback : LoginMiddleware
10+
{
11+
public LoginMiddlewareWithExecutedCallback(RequestDelegate next, BaseLoginEndpointOptions loginEndpointOptions, Func<BasicLoginModel, Task> onLoginExecuted)
12+
: base(next, loginEndpointOptions, onLoginExecuted)
13+
{
14+
_onLoginExecuted = onLoginExecuted;
15+
}
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.AspNetCore.Http;
4+
using TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login.Models;
5+
using TourmalineCore.AspNetCore.JwtAuthentication.Shared.Options;
6+
7+
namespace TourmalineCore.AspNetCore.JwtAuthentication.Shared.Middlewares.Login
8+
{
9+
internal class LoginMiddlewareWithExecutingCallback : LoginMiddleware
10+
{
11+
public LoginMiddlewareWithExecutingCallback(RequestDelegate next, BaseLoginEndpointOptions loginEndpointOptions, Func<BasicLoginModel, Task> onLoginExecuting)
12+
: base(next, loginEndpointOptions, onLoginExecuting, null)
13+
{
14+
_onLoginExecuting = onLoginExecuting;
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)