android — ASP.NET Web API Аутентификация" />

ASP.NET Web API Аутентификация

Я ищу аутентификацию пользователя из клиентского приложения при использовании ASP.NET Web API . Я просмотрел все видео на сайте, а также прочитал это сообщение на форуме .

Правильное размещение атрибута [Authorize] возвращает 401 Unauthorized

Я хочу предоставить учетные данные пользователя из приложения Android в API, зарегистрировать пользователя, а затем пройти предварительную аутентификацию всех последующих вызовов API.

121 голос | спросил Mujtaba Hassan 13 J0000006Europe/Moscow 2012, 16:36:36

3 ответа


0
  

разрешить пользователю входить в API

Вам необходимо отправить действительный файл cookie для проверки подлинности с помощью форм. Этот файл cookie обычно отправляется сервером при аутентификации (действие LogOn) путем вызова [FormsAuthentication.SetAuthCookie (см.

ответил Darin Dimitrov 13 J0000006Europe/Moscow 2012, 16:41:58
0

Я беру андроид в качестве примера.

public abstract class HttpHelper {

private final static String TAG = "HttpHelper";
private final static String API_URL = "http://your.url/api/";

private static CookieStore sCookieStore;

public static String invokePost(String action, List<NameValuePair> params) {
    try {
        String url = API_URL + action + "/";
        Log.d(TAG, "url is" + url);
        HttpPost httpPost = new HttpPost(url);
        if (params != null && params.size() > 0) {
            HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
            httpPost.setEntity(entity);
        }
        return invoke(httpPost);
    } catch (Exception e) {
        Log.e(TAG, e.toString());
    }

    return null;
}

public static String invokePost(String action) {
    return invokePost(action, null);
}

public static String invokeGet(String action, List<NameValuePair> params) {
    try {
        StringBuilder sb = new StringBuilder(API_URL);
        sb.append(action);
        if (params != null) {
            for (NameValuePair param : params) {
                sb.append("?");
                sb.append(param.getName());
                sb.append("=");
                sb.append(param.getValue());
            }
        }
        Log.d(TAG, "url is" + sb.toString());
        HttpGet httpGet = new HttpGet(sb.toString());
        return invoke(httpGet);
    } catch (Exception e) {
        Log.e(TAG, e.toString());
    }

    return null;
}

public static String invokeGet(String action) {
    return invokeGet(action, null);
}

private static String invoke(HttpUriRequest request)
        throws ClientProtocolException, IOException {
    String result = null;
    DefaultHttpClient httpClient = new DefaultHttpClient();

    // restore cookie
    if (sCookieStore != null) {
        httpClient.setCookieStore(sCookieStore);
    }

    HttpResponse response = httpClient.execute(request);

    StringBuilder builder = new StringBuilder();
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            response.getEntity().getContent()));
    for (String s = reader.readLine(); s != null; s = reader.readLine()) {
        builder.append(s);
    }
    result = builder.toString();
    Log.d(TAG, "result is ( " + result + " )");

    // store cookie
    sCookieStore = ((AbstractHttpClient) httpClient).getCookieStore();
    return result;
}

Внимание, пожалуйста: i.localhost не может быть использован. Android-устройство выглядит localhost как сам хост. ii. При развертывании веб-API в IIS необходимо открыть проверку подлинности формы.

ответил user2293998 26 PMpFri, 26 Apr 2013 17:52:58 +040052Friday 2013, 17:52:58
0

Используйте этот код и получите доступ к базе данных

[HttpPost]
[Route("login")]
public IHttpActionResult Login(LoginRequest request)
{
       CheckModelState();
       ApiResponse<LoginApiResponse> response = new ApiResponse<LoginApiResponse>();
       LoginResponse user;
       var count = 0;
       RoleName roleName = new RoleName();
       using (var authManager = InspectorBusinessFacade.GetAuthManagerInstance())
       {
           user = authManager.Authenticate(request); 
       } reponse(ok) 
}
ответил Sanila Salim 5 MonEurope/Moscow2016-12-05T12:46:20+03:00Europe/Moscow12bEurope/MoscowMon, 05 Dec 2016 12:46:20 +0300 2016, 12:46:20

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132