在Wcf数据服务中进行授权

时间:2012-03-13 22:11:38

标签: c# .net wcf authorization wcf-data-services

我正在撰写 WCF REST数据服务。我需要根据url addres(https)提供的登录名和密码添加授权系统。

在每个网址都应该是登录名和密码:

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

在服务方我想授权。应检查用户是否具有访问权限 数据。在这种情况下,应检查用户是否具有读取表产品的角色。 角色存储在数据库中

有没有机会成功?

1 个答案:

答案 0 :(得分:0)

实施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();
                }
            }
        }