首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrincipalPermission请求授权失败

PrincipalPermission请求授权失败
EN

Stack Overflow用户
提问于 2016-02-29 01:26:14
回答 1查看 334关注 0票数 0

我有一个服务,其中一些方法有PrincipalPermissionAttribute。如果主体检查失败,我希望请求身份验证。例如:

代码语言:javascript
复制
[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
public string GetData()

如果调用用户是管理员,服务应该返回数据。如果调用的用户不是管理员,服务应该请求身份验证,如果失败,服务应该返回401响应。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-07 00:32:56

好的,我已经成功地用一个助手类完成了这个任务:

代码语言:javascript
复制
internal static class UserPermissions
{
    public static bool CheckRole(Role role)
    {
        try {
            var p = new PrincipalPermission(null, role.ToString());
            p.Demand();
        }
        catch (SecurityException) {
            return false;
        }
        return true;
    }

    public static void AssertRole(Role role)
    {
        if (!CheckRole(role)) {
            throw new WebFaultException(HttpStatusCode.Unauthorized);
        }
    }
}

public enum Role
{
    Administrator,
    Customer
}

有了这样的用法:

代码语言:javascript
复制
public class CustomerService : ICustomerService
{
        public List<Order> GetOrders()
        {
            UserPermissions.AssertRole(Role.Customer);
            // Code to get orders.
        }
}

因此,我放弃了ping-ponging身份验证请求的想法,只返回401错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35690549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档