AutomaticLogoutOnCloseTab/Browser-BlazorServerSide
创始人
2024-09-23 18:30:23
0

Blazor Server Side应用程序使用SignalR与服务器进行通信,因此可以使用SignalR的相关事件来实现用户在关闭选项卡或浏览器时自动注销。

  1. 在Startup.cs文件中添加以下代码来配置SignalR:
 services.AddSignalR();
  1. 在App.razor文件中添加以下代码来注册SignalR的事件:
@inject NavigationManager NavigationManager
@inject IJSRuntime JSRuntime

@implements IDisposable

private HubConnection hubConnection;
private string connectionErrorMessage;

protected async override Task OnInitializedAsync()
{
    hubConnection = new HubConnectionBuilder()
        .WithUrl(NavigationManager.ToAbsoluteUri("/myHub"))
        .Build();

    hubConnection.On("Logout", (message) =>
    {
        JSRuntime.InvokeVoidAsync("alert", message);
        NavigationManager.NavigateTo("/");
    });

    try
    {
        await hubConnection.StartAsync();
    }
    catch (Exception ex)
    {
        connectionErrorMessage = ex.Message;
    }
}

public async ValueTask DisposeAsync()
{
    if (hubConnection != null)
    {
        await hubConnection.DisposeAsync();
    }
}
  1. 在Server项目中创建一个Hub类,并添加以下代码:
public class MyHub : Hub
{
    public async Task LogoutAsync(string message)
    {
        await Clients.All.SendAsync("Logout", message);
    }

    public override async Task OnDisconnectedAsync(Exception exception)
    {
        await LogoutAsync("用户已注销");
        await base.OnDisconnectedAsync(exception);
    }
}
  1. 修改Logout页面的代码,添加以下代码:
@inject NavigationManager NavigationManager
@inject HubConnection hubConnection

@page "/logout"

@if (hubConnection.State == HubConnectionState.Disconnected)
{
    
@("SignalR连接错误:" + hubConnection.GetConnectionErrorMessage())
} else {
正在注销...
} @code { protected override async Task OnInitializedAsync() { await hubConnection.SendAsync("LogoutAsync", "用户已注销"); NavigationManager.NavigateTo("/", force

相关内容

热门资讯

新手必备!fishpoker扑... 新手必备!fishpoker扑克辅助,德州ai人工智能,揭秘教程(竟然真的有挂)1、德州ai人工智能...
最新技巧!wpk德州ai机器人... 最新技巧!wpk德州ai机器人,aapoker有外挂,AI教程(先前存在有挂)德州ai机器人辅助器中...
大神普及!德扑之星怎么在电脑上... 大神普及!德扑之星怎么在电脑上玩,wepoke有辅助挂,黑科技教程(果然有挂)是一款可以让一直输的玩...
实测必看!微扑克德州专用辅助器... 实测必看!微扑克德州专用辅助器,wepokeai机器人,攻略教程(一直真的有挂)1、超多福利:超高返...
查到实测辅助!微扑克辅助器是骗... 查到实测辅助!微扑克辅助器是骗人吗,德州免费辅助神器app,详细教程(果然有挂)德州免费辅助神器ap...
玩家必备教程!德州ai免费,w... 1、玩家必备教程!德州ai免费,wpk有辅助挂,规律教程(最初存在有挂);代表性(透视辅助软件透明挂...
玩家必备科技!微扑克怎么用ai... 玩家必备科技!微扑克怎么用ai辅助,aapoker挂,新2025版(起初是有挂)1.aapoker挂...
盘点十款!来玩德州app辅助工... 盘点十款!来玩德州app辅助工具,aapoker辅助,透明挂教程(一直有挂)1、不需要AI权限,帮助...
玩家必知教程!wpk发牌逻辑,... 玩家必知教程!wpk发牌逻辑,aapoker有挂,新版2025教程(都是有挂)1、金币登录送、破产送...
玩家亲测!wepok软件透明挂... 玩家亲测!wepok软件透明挂,aapoker辅助工具,解密教程(总是是真的有挂)1、很好的工具软件...