Авторизация в сервисе Wcf Data - PullRequest
1 голос
/ 14 марта 2012

Я пишу Служба данных WCF REST .Мне нужно добавить систему авторизации, основанную на логине и пароле, заданном адресом URL (https).

В каждом URL должны быть логин и пароль:

https://myservice.svc/Products()?$orderby=name&login=user_login&pass=user_pass

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

Есть ли возможность сделать это?

1 Ответ

0 голосов
/ 15 декабря 2016

Реализация метода OnStartProcessingRequest.

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    public class ServiceODataAFR : EntityFrameworkDataService<PortalContext>
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            ValidarAcesso();

            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
            config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        }

        protected override void OnStartProcessingRequest(ProcessRequestArgs args)
        {
            ValidarAcesso();

            base.OnStartProcessingRequest(args);
        }

        private static void ValidarAcesso()
        {
            using (var context = new PortalWeb())
            {
                if (!context.UsuarioEstaNoGrupo(EnumGrupoPermissao.AdministradorAFR.GetTitle()))
                {
                    throw new AddressAccessDeniedException();
                }
            }
        }
...