【发布时间】:2014-03-03 07:03:42
【问题描述】:
在我的 WCF webservice web.config 中,我在 serviceBehaviors 下有以下内容:
<serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="RoleProvider" />
这允许我使用 asp.net 角色提供程序并通过以下属性控制对 Web 服务调用的访问:
[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
我想知道如何使用上述内容,并加入如下定义的自定义主体。
public class UserPrincipal : IPrincipal
{
List<string> roleList = null;
public const string ROLE_ADMIN = "Admin";
public const string ROLE_DATAENTRY = "DataEntry";
public const string ROLE_READONLY = "ReadOnly";
public UserPrincipal(IIdentity identity, string[] roles)
{
Identity = identity;
roleList = new List<string>(roles);
}
public IIdentity Identity
{
get { return identity; }
}
public bool IsInRole(string role)
{
return roleList.Contains(role);
}
public bool CanEdit()
{
if (IsInRole(ROLE_ADMIN))
return true;
else if (IsInRole(ROLE_DATAENTRY))
return true;
else
return false;
}
public bool CanView()
{
if (IsInRole(ROLE_ADMIN))
return true;
else if (IsInRole(ROLE_DATAENTRY))
return true;
else if (IsInRole(ROLE_READONLY))
return true;
else
return false;
}
}
然后我想在服务方法中使用 CanView 和 CanEdit 调用。
我可以在 WCF 服务的哪个位置用我的扩展用户主体替换默认主体?
【问题讨论】: