管理员和匿名用户的操作访问权限

时间:2015-07-22 11:25:36

标签: c# asp.net-mvc authorization

我想通过Admin添加新用户(只是创建新用户),但同时匿名用户可以注册自己。 所以我覆盖授权属性(但现在它仅用于管理员访问)。

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    private readonly EnumUserType[] _allowedroles;
    private readonly IUserService _userService;

    public CustomAuthorizeAttribute(params EnumUserType[] roles)
    {
        this._allowedroles = roles;
        _userService = DependencyResolver.Current.GetService<IUserService>();
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var authorize = false;
        foreach (var role in _allowedroles)
        {
            var currRole = role;
            var userId = httpContext.User.Identity.GetUserId<int>();
            var user = _userService.GetMany(m => m.Id == userId
                                                 && m.Type == currRole && !m.Deleted).Result;

            if (user.Any())
            {
                authorize = true;
            }
        }
        return authorize;
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new HttpUnauthorizedResult();
    }
}

注意:在我的案例中,管理员不是身份角色。它是自定义字段&#39; Type&#39;。

问题 - 如何允许匿名用户使用此属性进行访问?

1 个答案:

答案 0 :(得分:0)

也许我误解了,但如果你想允许匿名用户那么为什么要使用authorize属性呢?你真的应该在这里分离问题,并有一个匿名访问的注册页面和一个受你的authorize属性保护的管理功能的单独页面。