在Wcf数据服务中进行授权

本文关键字:授权 服务 Wcf 数据 | 更新日期: 2023-09-27 18:27:37

我正在编写WCF REST数据服务。我需要添加基于url地址(https)提供的登录和密码的授权系统。

在每个url中都应该有登录名和密码:

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

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

有机会成功吗?

在Wcf数据服务中进行授权

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