Вы можете создать плагин докера с по vieux / sshfs на вашем хосте и отобразить его на другой хост.
Когда вы создаете том с помощью Docker Volume create, или когда вы запускаете контейнер, который использует еще не созданный том, вы можете указать драйвер тома. В следующих примерах используется драйвер тома vieux / sshfs, сначала при создании отдельного тома, а затем при запуске контейнера, создающего новый том.
В этом примере предполагается, что у вас есть два узла, первый из которых является хостом Docker и может подключаться ко второму с помощью SSH.
На хосте Docker установите плагин vieux / sshfs:
$ docker plugin install --grant-all-permissions vieux/sshfs
Создание тома с помощью драйвера тома В этом примере указывается пароль SSH, но если на двух хостах настроены общие ключи, вы можете опустить пароль. Каждый драйвер тома может иметь ноль или более настраиваемых параметров, каждый из которых указывается с помощью флага -o.
$ docker volume create --driver vieux/sshfs \
-o sshcmd=test@node2:/home/test \
-o password=testpassword \
sshvolume
volumes:
- type: volume
driver: vieux/sshfs
source: sshvolume
target: /target
Поместите это в Login1_Authenticate
перед вызовом Response.Redirect ("/ admin / default.aspx");
FormsAuthentication.SetAuthCookie("username", true);
Попробуйте перенести свой код и предложение Громера на событие LoggedIn.
protected void Login1_LoggedIn(object sender, EventArgs e)
{
if(Membership.ValidateUser(Login1.UserName, Login1.Password))
{
FormsAuthentication.SetAuthCookie(Login1.UserName, true);
Response.Redirect("/admin/default.aspx");
}
}
РЕДАКТИРОВАТЬ: Как сказал Громер, делайте это только в том случае, если вам нужно выполнить какой-то бизнес-код после того, как пользователь вошел в систему и до того, как он / она перенаправлен.
РЕДАКТИРОВАНИЕ РЕДАКТИРОВАНИЕ: Visual Studio описывает событие Authenticate как «вызванное для аутентификации пользователя», что означает, что пользователь не аутентифицирован до вызова события. Таким образом, вы не можете подтвердить, что пользователь вошел в систему, потому что он еще не прошел аутентификацию.
Хотя я и не знаю, сколько это поможет, это стандартный код, который я использую, чтобы различать пользователей с правами администратора или обычных пользователей. Прекрасно работает для меня.
На вашей странице входа в систему, вероятно, онкликом создайте пользовательский объект и вызовите некоторую функцию с этим кодом (UserRole - это Enum с вашими ролями):
If admin Then
If role = UserRole.Admin Then
RedirectFromLoginPage(username & "|" & userid, False)
Return True
Else
Return False
End If
Else
If String.IsNullOrEmpty(Current.Request.QueryString("ReturnUrl")) Then
SetAuthCookie(username & "|" & userid, True)
Else
RedirectFromLoginPage(username & "|" & userid, True)
End If
Return True
End If
В вашем web.config:
<location path="admin">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
.....
<system.web>
<authentication mode="Forms">
<forms loginUrl="/registration/login.aspx" timeout="129600"/>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
... и если вы действительно хотите, на вашей странице Global.asax:
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
If Request.IsAuthenticated Then
''
'get your roles for the current user'
''
Dim userRoles() As String = Split(roles, "|")
'Add the roles to the User Principal'
HttpContext.Current.User = New GenericPrincipal(User.Identity, userRoles)
End If
End Sub
Громер знает ответ, но вы также можете прочитать эту статью MSDN, чтобы узнать больше: