首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个地方定义Authorize属性,以便与多个ActionResults一起使用?

在一个地方定义Authorize属性,以便与多个ActionResults一起使用?
EN

Stack Overflow用户
提问于 2013-04-13 11:41:29
回答 1查看 611关注 0票数 0

我在控制器或操作上使用Authorize属性,例如:

代码语言:javascript
运行
复制
[Authorize(Roles="admin,user", Users="user1,user2")]
public ActionResult LogOn(LogOnModel model, string returnUrl) {
    return view();
}

但是,我必须在每个控制器或操作上像这样定义它的[Authorize(Roles="admin,user",Users="user1")]

我如何在一个地方/文件中定义它?

RegisterGlobalFilters会这样做吗?我不知道如何使用全局过滤器来定义[Authorize(Roles="*",Users="*")]

EN

回答 1

Stack Overflow用户

发布于 2013-04-13 11:47:08

尝尝这个

创建一个新文件,并在操作中使用此属性头

代码语言:javascript
运行
复制
public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
   private readonly RoleEnum[] _acceptedRoles;


public AuthorizeAttribute(params RoleEnum[] acceptedroles)
{
    _acceptedRoles = acceptedroles;
}

public AuthorizeAttribute(params bool[] allowAll)
{
    if (allowAll[0])
        _acceptedRoles = new RoleEnum[] { RoleEnum.Admin, RoleEnum.user};
}

public void OnAuthorization(AuthorizationContext filterContext)
{
    if (SessionHelper.UserInSession == null)//user not logged in
    {
        FormsAuthentication.SignOut();
        filterContext.Result =
             new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary {{ "controller", "Home" },
                                         { "action", "Index" },
                                         { "returnUrl",    filterContext.HttpContext.Request.RawUrl } });//send the user to login page with return url
        return;
    }
    if (!_acceptedRoles.Any(acceptedRole => SessionHelper.UserInSession.UserRoles.Any(currentRole => acceptedRole == currentRole.Role)))
        //allow if any of the user roles is among accepted roles. Else redirect to login page
        throw new UnauthorizedAccessException();

 }
}

这也适用于返回URL

Reference

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

https://stackoverflow.com/questions/15983984

复制
相关文章

相似问题

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