权限委托
权限委托是一种将当前用户职责在限定时间内委派给其他用户的方式。这样,用户可以切换到被委托用户的账户,并代表其执行操作。
启用/禁用权限委托
自v7.2版本起,权限委托功能在ABP启动模板中默认启用。但如果您的ABP版本低于7.2,则需要手动启用该功能。
权限委托功能内部使用模拟登录系统,因此在启用权限委托前,请确保您已正确配置模拟登录功能。
您可以根据您的UI选项阅读以下章节来启用权限委托功能。
MVC分层架构 & 微服务MVC UI
private Task ConfigureUserMenuAsync(MenuConfigurationContext context)
{
var authServerUrl = _configuration["AuthServer:Authority"] ?? "~";
var uiResource = context.GetLocalizer<AbpUiResource>();
var accountResource = context.GetLocalizer<AccountResource>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpAccountAuthorityDelegationOptions>>();
// 添加权限委托用户菜单
if (currentUser.FindImpersonatorUserId() == null && options.Value.EnableDelegatedImpersonation)
{
context.Menu.AddItem(new ApplicationMenuItem("Account.AuthorityDelegation", accountResource["AuthorityDelegation"], url: "javascript:void(0)", icon: "fa fa-users"));
}
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountResource["MyAccount"], $"{authServerUrl.EnsureEndsWith('/')}Account/Manage", icon: "fa fa-cog", order: 1000, null, "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.SecurityLogs", accountResource["MySecurityLogs"], $"{authServerUrl.EnsureEndsWith('/')}Account/SecurityLogs", icon: "fa fa-cog", target: "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", uiResource["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000).RequireAuthenticated());
return Task.CompletedTask;
}
Blazor分层架构 & 微服务Blazor UI
private Task ConfigureUserMenuAsync(MenuConfigurationContext context)
{
var authServerUrl = _configuration["AuthServer:Authority"] ?? "~";
var uiResource = context.GetLocalizer<AbpUiResource>();
var accountResource = context.GetLocalizer<AccountResource>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpAccountAuthorityDelegationOptions>>();
// 添加权限委托用户菜单
if (currentUser.FindImpersonatorUserId() == null && options.Value.EnableDelegatedImpersonation)
{
context.Menu.AddItem(new ApplicationMenuItem("Account.AuthorityDelegation", accountResource["AuthorityDelegation"], url: "javascript:void(0)", icon: "fa fa-users").UseComponent(typeof(AuthorityDelegationModal)));
}
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountResource["MyAccount"], $"{authServerUrl.EnsureEndsWith('/')}Account/Manage", icon: "fa fa-cog", order: 1000, null, "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.SecurityLogs", accountResource["MySecurityLogs"], $"{authServerUrl.EnsureEndsWith('/')}Account/SecurityLogs", icon: "fa fa-cog", target: "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", uiResource["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000).RequireAuthenticated());
return Task.CompletedTask;
}
注意: 目前Blazor分层架构UI尚未实现,我们计划在v7.3版本中提供该功能。
用户界面(UI)
委托新用户
您可以在用户菜单下看到权限委托菜单项。点击该菜单后,将打开一个模态窗口,在窗口的第一个选项卡中,您将看到已委托用户的列表:
您可以点击委托新用户按钮来委托新用户:
- 您可以指定时间范围,确保委托仅在该时间范围内有效
- 您可以对同一用户进行多次委托,并设置不同的委托时间范围
您需要输入完整的用户名来查询并委托用户
委托有三种状态:
已过期、活跃和未来。这些状态通过检查指定的时间间隔自动设置
我的被委托用户
您可以查看已将权限委托给您,允许您代表其登录的用户列表,如下图所示:
您可以点击登录按钮以被委托用户身份登录应用程序,并通过点击返回我的账户图标回到您的账户:
抠丁客






