AngularJS устанавливает заголовки SSL

0

Я начал новый проект Yeoman AngularJS, размещенный в Apache. Я получаю данные из службы WCF Restful, размещенной в IIS с включенным CORS. Я могу получить данные без проблем. Тем не менее, в настоящее время я передаю имя пользователя и пароль каждый раз на URL-адресе и переопределяя валидатор пользователя на стороне WCF, что крайне плохо и не защищено никакими средствами. Не беспокойтесь об этом только в среде разработки. Как установить значения заголовка с учетными данными пользователя до вызова службы SSL? В основном, как настроить веб-запрос в AngularJS до вызова службы?

Теги:
ssl
wcf

1 ответ

0
Лучший ответ

Я закончил создание пользовательского заголовка в моем приложении AngularJS под названием "Авторизация", установив значение заголовка в приложении и прочитав значения заголовка в службе WCF.

То, как я смог это сделать, выглядит следующим образом:

Во-первых, мне пришлось изменить службу WCF, чтобы я мог получить контекст Http. Для этого мне пришлось сначала включить совместимость ASP Net в файле web.config следующим образом:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />  

Мне пришлось добавить Global.asax в мой проект WebService и изменить событие BeginRequest, чтобы разрешить мой новый настраиваемый заголовок следующим образом:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Authorization");
        if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");

            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
            HttpContext.Current.Response.End();
        }

    }

Затем я разрешил совместимость с ASP Net в классе службы, добавив в класс такой класс:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

На этом этапе я смог получить заголовки Http Context в службе WCF. Ниже показано, как я получил значение заголовка в служебном коде:

HttpContext.Current.Request.Headers["Authorization"]

На данный момент служба WCF может использовать мой собственный заголовок. Последним шагом является установка заголовка из заводского кода службы AngularJS, как показано ниже:

app.factory('serviceFactory', ['$http', function ($http) {
var urlBase = 'https://domainName.com/MyService.svc/';
var dataFactory = {};
var success = {};

serviceFactory.Login = function (username, password) {
    return $http({
        url: urlBase + "WebServiceLoginMethodName",
        type: 'GET',
        dataType: 'json',
        headers: { 'Authorization': "Basic " + username + ":" + password }
    });
};

Это не запускает User Validator в веб-службе, но это позволяет мне указывать имя пользователя и пароль в заголовках Http, которые я буду зашифровать и расшифровать в приложении и службе в качестве следующего шага.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню