powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / MVC-ApiController Вход от программы-клиента с авторизацией
4 сообщений из 4, страница 1 из 1
MVC-ApiController Вход от программы-клиента с авторизацией
    #38191502
ВладимирЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый усем день!
Есть web-сервис с новомодным MVC4-ApiController (то есть по сути это MVC-сайт, назовем его http://webapi.loc, с возможностью обслуживать внешние web-запросы).
Сделал принудительную авторизацию от своей БД, как написано в примере:
http://www.arturdr.ru/net/prostaya-kastomnaya-asp-net-mvc3-sovmestimaya-avtorizatsiya/

Если зайти на сайт через браузер, то все вроде как хорошо - ввел user-psw, оно проавторизовалось и т.д., НО:
теперь пытаюсь туда залезть из VBA:

Dim xmlhtp As MSXML2.XMLHTTP
xmlhtp.Open "GET", " http://webapi.loc/api/line", False , user, psw

и здесь начинаются для меня непонятки:
Если сайт открыт (запущен в браузере) и выполнен вход, то оно нормально проваливается и с авторизацией и без, но если сайт "не открыт", то оно уже никуда не идет??
Посколько тема является "типовой" и код не сложным, то выкладываю здесь фрагменты кода WebApi:
===================================================================
WebConfig:

<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Все остальное из webConfig - "типа membershipprovider" убрано
КОНТРОЛЛЕР:
Авторизация:
public class AccountController : Controller
{
private readonly AuthorizationService _authorizationService = new AuthorizationService();


// GET: /Account/Login
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}

// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{

if (_authorizationService.ValidateUser(model.UserName, model.Password)) // валидируем пользователя
{
FormsAuthentication.SetAuthCookie(model.UserName, true);
if (!String.IsNullOrEmpty(returnUrl))
{
return RedirectToLocal(returnUrl);
}
return RedirectToLocal("Index");
}
ModelState.AddModelError("", "Имя пользователя или пароль указаны неверно.");
return View(model);

}
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
FormsAuthentication.SignOut(); // разлогиниваем текущего пользователя
return RedirectToAction("Index", "Home");
}
....
public class AuthorizationService
{
public virtual bool ValidateUser(string username, string password)
{
if (username == "test" && password == "test") //это заглушка, "test" должны получать от своей из БД
{
return true;
}
return false;
}
}
}
....................
КОНТРОЛЛЕР с ApiController (собственно web-сервисы):
using System;
........
namespace webApi.Controllers
{
[Authorize] //если это убрать, то доступ открыт по любому, если задать - то от программы "не пускает"
public class LineController : ApiController
{
static readonly ILineRepository repository = new LineRepository();

public int Get(int Int)
{
return repository.Get(Int) );
}
public string Get(string Str)
{
return repository.Get(Str);
}
................

Может кто подскажет хотя бы на уровне идеи: как обеспечить доступ к web-api со стороны программного внешнего web-запроса c аутентификацией-авторизацией. То ли здесь атрибуты-операторы как-то переставить, или идти по пути переопределения классов-интерфейсов, отвечающих за "это дело": IPrincipal MemberShipProvider???
...
Рейтинг: 0 / 0
MVC-ApiController Вход от программы-клиента с авторизацией
    #38191770
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирЛ,

ставь fiddler и смотри оба случая, потом сравнивай.
это быстрее, чем тут с кодом твоим упражнятся.
...
Рейтинг: 0 / 0
MVC-ApiController Вход от программы-клиента с авторизацией
    #38192798
ВладимирЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно вопрос по другому поставить: Делаем обычный mvc4-сайт по шаблону, где уже включена (я так понимаю) аутентификация, Запускаем - все работает. Добавляем apicontroller с атрибутом [Authorize] (авторизация). Далее пытаемся достучаться до этого контроллера, а "оно" не пускает - ("Для этого запроса требуется авторизация"). То есть вопрос - а как от аутентификации или входа на сайт перейти к авторизации к одельному контролу или странице?
...
Рейтинг: 0 / 0
MVC-ApiController Вход от программы-клиента с авторизацией
    #38193009
ВладимирЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или так - как запустить "механизм" авторизации на MVC-сайте со стороны HTTP-запроса:
httpQ.Open "Get","ddd.loc/api/fff",false, user, psw
То есть в сайт оно заходит, а дальше -> есть авторизация через web-браузер с вызовом соответствующих форм и т.д.,
а если идет запрос, то он сразу "ломится" к соим "данным", и авторизацию при этом надо подключать "руками", а как?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / MVC-ApiController Вход от программы-клиента с авторизацией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]