Существует нет такой функции не предусмотрено в Адал, мы должны реализовать себя.
Например, для достижения этой цели в MVC мы можем сохранить имя пользователя для входа в файлы cookie. Затем мы можем переключить пользователей с помощью параметра login_hint=userName
. Нам не нужно, чтобы изменить метод SignIn
независимо от того, что пользователи входа в, как показано ниже:
public void SignIn(string userName)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
И мы можем добавить параметр login_hint
по обычаю RedirectToIdentityProvider
из OpenIdConnectAuthenticationNotifications
:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider=context=>
{
var userName = context.Request.Query.Get("userName");
context.ProtocolMessage.Parameters.Add("login_hint", userName);
return Task.FromResult(0);
}
},
});
И в представлении , мы должны предоставить пользовательский интерфейс для переключения пользователей, вот простой пример только для демонстрации, вы можете изменить код, чтобы получить имя пользователя пользователей из файлов cookie:
<li>@Html.ActionLink("Sign in-user1", "SignIn", "Account", routeValues: new { userName = "[email protected]" }, htmlAttributes: new { id = "loginLink" })</li>
<li>@Html.ActionLink("Sign in-user2", "SignIn", "Account", routeValues: new { userName = "[email protected]" }, htmlAttributes: new { id = "loginLink" })</li>
У вас еще есть проблема с этим сценарием? Пожалуйста, дайте мне знать, если это поможет. –
@ FeiXue-MSFT Спасибо за регистрацию. Я перечитывал ваш ответ много раз и не знаю, что такое эффект 'context.ProtocolMessage.Parameters.Add' и как я должен использовать файлы cookie для этого. В действительности, люди будут выбирать не только из многих учетных записей MSAL или ADAL, но и для сторонних учетных записей. – LamonteCristo