При размещении ADO.NET DataService <T>в WCF WebServiceHost как получить доступ к учетным данным, указанным в запросе? - PullRequest
0 голосов
/ 10 ноября 2009

Если у меня есть такой тип:

public class Context
{
    public Context()
    {
    }
    public IQueryable<Record> Records
    {
        get
        {
            if (user == someone) //psuedocode
            {
               //return something
            }
            else
            {
               //return something else
            }
        }
    }
}

, который я размещаю в DataService, например:

WebServiceHost host = new WebServiceHost(typeof(DataService<Context>, "http://localhost:43334/");
WebHttpBinding binding = new WebHttpBinding();
ServiceEndpoint endpoint = host.AddServiceEndpoint(
           typeof(System.Data.Services.IRequestHandler), binding,
           "folder"); 
host.Open();

Как получить доступ к предоставленным учетным данным от клиентазапрос?Я знаю, что есть варианты запрета доступа, но как мне получить предоставленные учетные данные, чтобы определить, кому запретить и / или какие записи могут быть доступны данному пользователю?Я чувствую, что это или действительно легко, и я что-то упускаю, или что я лаю не на том дереве.

1 Ответ

1 голос
/ 11 ноября 2009

Чтобы получить доступ к учетным данным текущего вошедшего в систему пользователя в вашем DataService, вам необходимо:
a) Настройте службу данных, чтобы иметь возможность доступа к текущему веб-контексту HTTP

using System.ServiceModel.Activation;
/// <summary>
/// Require that the WCF host setup access to the WebHttpContext of the currently executing request.
/// More details here : http://msdn.microsoft.com/en-us/library/aa702682.aspx
/// </summary>
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ContextService : DataService<Context>

b) получить доступ к данным текущего пользователя через свойство HttpContext.Current.User

if (System.Web.HttpContext.Current.User.Identity.Name == кто-то) { // вернуть что-то
} еще { // вернуть что-то еще
}

Некоторые полезные ссылки
HttpContext.Current.User на MSDN
Состояние общего доступа между ASP.NET и WCF

...