在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的角色角色存储在数据库中。
有机会成功吗?
实现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();
}
}
}