Встраивание Flash player в C++ или JAVA-приложении?

Я наконец понял, как это сделать. В этом примере используется аутентификация JWT по умолчанию и пользовательская аутентификация в некоторых редких случаях. Обратите внимание, что из того, что я прочитал, Microsoft, похоже, не рекомендует писать свою собственную аутентификацию. Пожалуйста, используйте на свой страх и риск.

Сначала добавьте этот код в метод startup.cs ConfigureServices, чтобы обеспечить глобальное применение аутентификации.

services.AddMvc(options => 
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
    })

Затем добавьте это, чтобы настроить схемы, которые вы хотите использовать (в нашем случае JWT и Custom).

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    // Jwt Authentication
    .AddJwtBearer(options =>
    {
        options.Audience = ".......";
        options.Authority = "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_...";
    })
    // Custom auth
    .AddScheme<CustomAuthOptions, 
        CustomAuthHandler>(CustomAuthOptions.DefaultScheme, options => { });

Затем создайте класс для хранения пользовательских настроек аутентификации:

public class CustomAuthOptions : AuthenticationSchemeOptions
{
    public const string Scheme = "custom auth";
    public const string CustomAuthType = "custom auth type";
}

Наконец, добавьте обработчик аутентификации для реализации пользовательской логики аутентификации.

public class CustomAuthHandler : AuthenticationHandler<CustomAuthOptions>
{
    public CustomAuthHandler(
        IOptionsMonitor<CustomAuthOptions> options, 
        ILoggerFactory logger, 
        UrlEncoder encoder, 
        ISystemClock clock) : base(options, logger, encoder, clock)
    {
    }

    protected override Task<AuthenticateResult> HandleAuthenticateAsync()
    {
        // Auth logic goes here
        if (!Request.Headers....) 
        {
            return Task.FromResult(AuthenticateResult.Fail("Authentication Failed."));
        }

        // Create authenticated user
        ClaimsPrincipal principal = .... ;

        List<ClaimsIdentity> identities = 
            new List<ClaimsIdentity> {
                new ClaimsIdentity(CustomAuthOptions.CustomAuthType)};

        AuthenticationTicket ticket = 
            new AuthenticationTicket(
                new ClaimsPrincipal(identities), CustomAuthOptions.Scheme);

        return Task.FromResult(AuthenticateResult.Success(ticket));
    }
}

Наконец, чтобы связать все это вместе, добавьте атрибут авторизации к действиям, для которых вы хотите использовать пользовательскую авторизацию.

[HttpGet]
[Authorize(AuthenticationSchemes = CustomAuthOptions.Scheme)]
public HttpResponseMessage Get()
{
    ....
}

Теперь аутентификация JWT будет автоматически применяться ко всем действиям, а пользовательская аутентификация будет добавляться только к действиям с атрибутом Authorize, установленным для пользовательской схемы.

Надеюсь, это кому-нибудь поможет.

5
задан 8 revs 18 October 2008 в 03:13
поделиться

6 ответов

Я не знаю, как встроить флэш-память в C++, но Christopher Deckers (известности SWTSwing) разработал интересный взлом, который позволяет этому быть встроенным в Java. Можно найти больше информации в потоке объявления Javalobby.

4
ответ дан 14 December 2019 в 19:30
поделиться

If it has to be open source I'd consider Gnash, an open source flash implementation.
It works on all major platforms, supports most multimedia codecs and is supposed to be embeddable in applications through nsapi.

1
ответ дан 14 December 2019 в 19:30
поделиться

Если бы Вы хотите пойти с коммерческим решением, я рекомендовал бы Scaleform GFx. Это не дешево, тем не менее, но это чертовски хорошо.

0
ответ дан 14 December 2019 в 19:30
поделиться

Один простой способ создать Flash player в Вашем окне: AtlAxCreateControlEx.

Чтобы получить и отправить события, Вам будет нужен приемник: AtlAdvise. Необходимо будет определить события получения функций на ActionScript (т.е. Flash) сторона также.

0
ответ дан 14 December 2019 в 19:30
поделиться

Лично я не пробовал этого, но говорю, что в случае SWT / Java вы можете встроить окно браузера SWT в свой SWT / Java-приложение и в представлении браузера вы можете поместить контент с флэш-контентом, а затем связаться, скажем, с Merapi bridge с помощью флэш-фильма и Java.

-1
ответ дан 14 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: