相关疑难解决方法(0)

asp.net mvc用多个枚举装饰[Authorize()]

我有一个控制器,我想要两个角色才能访问它.1-admin或2-moderator

我知道你可以做[授权(角色="管理员,版主")]但我在枚举中有我的角色.凭借枚举,我只能授权一个角色.我无法弄清楚如何授权两个.

我尝试了类似[Authorize(Roles = MyEnum.Admin,MyEnum.Moderator)]但不会编译的东西.

有人曾经这样说过:

 [Authorize(Roles=MyEnum.Admin)]
 [Authorize(MyEnum.Moderator)]
 public ActionResult myAction()
 {
 }
Run Code Online (Sandbox Code Playgroud)

但它不能作为OR.我认为在这种情况下,用户必须是BOTH角色的一部分.我忽略了一些语法吗?或者这是我必须推出自己的自定义授权的情况?

asp.net-mvc authorization roles

32
推荐指数
3
解决办法
3万
查看次数

属性要求用户登录而不是拒绝访问?

更新:感谢此处的帮助,我创建了以下解决方案:

public class CustomAuthorize : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        // Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs
        // If user is not logged in prompt
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
        // Otherwise deny access
        else
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary {
                {"controller", "Account"},
                {"action", "NotAuthorized"}
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从NerdDinner开始,使用FormsAuthentication和ActiveDirectory作为我的会员提供者.我通过我的数据库使用Global.asax和AccountController(下面)添加了对角色的支持.

所以现在在我的控制器中,我的Authorize属性设置为仅限admin的角色(下面).我登录的用户是作者.当我点击删除时,它会要求我登录,即使我已经这样做了.我在哪里可以使用逻辑返回拒绝访问视图?

的Global.asax.cs

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie == null || authCookie.Value == "")
        { …
Run Code Online (Sandbox Code Playgroud)

c# forms-authentication roles asp.net-mvc-2

7
推荐指数
1
解决办法
1871
查看次数