我想通过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;。
问题 - 如何允许匿名用户使用此属性进行访问?
答案 0 :(得分:0)
也许我误解了,但如果你想允许匿名用户那么为什么要使用authorize属性呢?你真的应该在这里分离问题,并有一个匿名访问的注册页面和一个受你的authorize属性保护的管理功能的单独页面。