我正在尝试构建自定义AuthorizAttribute并覆盖AuthorizeCore 它在每个地方工作得很好 但是当我去访问限制网址时,如果没有特定的角色,则允许我去那里。比如当我点击URL" http://localhost:8758/Classified/Attributes"它需要管理员角色,但我的代码允许访问它而没有管理员角色。 我做错了什么? 这是我的代码。
using System;
using System.Web;
using System.Web.Mvc;
using Classified.Web.Services;
namespace Classified.Web
{
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public IFormsAuthenticationService AuthenticationService { get; set; }
public string RequiredRole;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null) throw new ArgumentNullException("httpContext");
AuthenticationService = new FormsAuthenticationService(new HttpContextWrapper(HttpContext.Current));
var user = AuthenticationService.GetAuthenticatedUser();
if (user == null)
return false;
foreach (var i in user.Roles)
{
if (i.RoleName == RequiredRole)
{
return true;
}
}
return false;
}
}
答案 0 :(得分:0)
我自己解决了......
有一点错误,我忘了在控制器之前申请授权 这样的事情。
[Authorize]
public class AdminController : Controller
{
.
.
.