Back to Use Cases
Interactive Server
The following sequence diagrams illustrate the use cases for Blazor.Auth in a Blazor application that is currently using Interactive Server render mode:
Sign-In
sequenceDiagram
actor user as User
participant page as Page
box rgba(101, 63, 232, 0.5) Blazor.Auth
participant userServiceServer as IUserService (Server)
participant blazorClient as Client Machine
participant blazorServer as Blazor Server
end
participant authService as IAuthenticationService (Server)
user ->>+ page: Submit Sign-In Form
page ->>+ userServiceServer: SignInAsync(signInPayload)
note over page,userServiceServer: Resolve IUserService from DI<br/> and call it's `SignInAsync` method.
userServiceServer ->>+ blazorClient: Remote JS Interop
blazorClient ->>+ blazorServer: HTTP Request to <br/> Sign-In endpoint
blazorServer ->>+ authService: SignInAsync(signInPayload)
authService ->> authService: Your server-side sign-in logic
authService -->>- blazorServer: AuthenticationResult
blazorServer -->> blazorServer: Update authentication cookies
blazorServer -->>- blazorClient: AuthenticationOperationInfo
note over blazorClient,blazorServer: Updated cookies will be<br/>attached to the HTTP response.
blazorClient -->>- userServiceServer: AuthenticationOperationInfo
userServiceServer -->>- page: AuthenticationOperationInfo
page -->>- user: Continue, <br/> e.g. redirect to home page, <br/> or other custom logic
note over user,userServiceServer: Upon receiving AuthenticationOperationInfo from IUserService, <br/> do a page refresh in order to refresh the User's AuthenticationState<br/><br/> Example: NavigationManager.NavigateTo("/", true).
Sign-Out
sequenceDiagram
actor user as User
participant page as Page
box rgba(101, 63, 232, 0.5) Blazor.Auth
participant userServiceServer as IUserService (Server)
participant blazorClient as Client Machine
participant blazorServer as Blazor Server
end
user ->>+ page: Submit Sign-Out Form
page ->>+ userServiceServer: SignOutAsync()
note over page,userServiceServer: Resolve IUserService from DI<br/> and call it's `SignOutAsync` method.
userServiceServer ->>+ blazorClient: Remote JS Interop
blazorClient ->>+ blazorServer: HTTP Request to <br/> Sign-Out endpoint
blazorServer -->> blazorServer: Clear authentication cookies
blazorServer -->>- blazorClient: #32;
note over blazorClient,blazorServer: Blazor.Auth will clear the user's <br/> authentication cookies <br/> by marking them as expired <br/> in the HTTP response.
blazorClient -->>- userServiceServer: #32;
userServiceServer -->>- page: #32;
page -->>- user: Continue, <br/> e.g. redirect to home page, <br/> or other custom logic
note over user,userServiceServer: Upon finishing method execution, <br/> do a page refresh in order to refresh the User's AuthenticationState<br/><br/> Example: NavigationManager.NavigateTo("/", true).
Sign-Up
sequenceDiagram
actor user as User
participant page as Page
box rgba(101, 63, 232, 0.5) Blazor.Auth
participant userServiceServer as IUserService (Server)
participant blazorClient as Client Machine
participant blazorServer as Blazor Server
end
participant authService as IAuthenticationService (Server)
user ->>+ page: Submit Sign-Up Form
page ->>+ userServiceServer: SignUpAsync(signUpPayload)
note over page,userServiceServer: Resolve IUserService from DI<br/> and call it's `SignUpAsync` method.
userServiceServer ->>+ blazorClient: Remote JS Interop
blazorClient ->>+ blazorServer: HTTP Request to <br/> Sign-Up endpoint
blazorServer ->>+ authService: SignUpAsync(signUpPayload)
authService ->> authService: Your server-side sign-up logic
authService -->>- blazorServer: AuthenticationResult
blazorServer -->> blazorServer: Update authentication cookies
blazorServer -->>- blazorClient: AuthenticationOperationInfo
note over blazorClient,blazorServer: Updated cookies will be<br/>attached to the HTTP response.
blazorClient -->>- userServiceServer: AuthenticationOperationInfo
userServiceServer -->>- page: AuthenticationOperationInfo
page -->>- user: Continue, <br/> e.g. redirect to home page, <br/> or other custom logic
note over user,userServiceServer: Upon receiving AuthenticationOperationInfo from IUserService, <br/> do a page refresh in order to refresh the User's AuthenticationState<br/><br/> Example: NavigationManager.NavigateTo("/", true).