代码之家  ›  专栏  ›  技术社区  ›  BobTheBuilder

当用户权限基于特定帐户/角色以外的其他内容时,定制用户授权的最佳方法是什么?

  •  3
  • BobTheBuilder  · 技术社区  · 16 年前

    我正在写一个ASP。NET MVC应用程序,其中用户权限基于点而不是硬编码的角色本身。我尝试过研究授权和成员资格提供者,但我发现的所有信息都指向基于角色的身份验证,而这并不是我模型的一部分。

    在写这个问题的时候,我想知道我是否在研究正确的事情。这是自定义角色提供者吗?这样的东西存在吗?我突然想到,拥有一个自定义角色提供者来检查用户的点,以确定他们是否处于特定角色,这可能是最简单的方法,但我不知道我需要使用哪些与ASP相关的关键字。NET MVC来查找正确的信息。

    1 回复  |  直到 16 年前
        1
  •  5
  •   tvanfosson    16 年前

    public class PointAuthorizeAttribute : AuthorizeAttribute
    {
        public int PointsRequired { get; set; }
    
        protected override bool AuthorizeCore( HttpContextBase httpContext )
        {
             if (base.AuthorizeCore( httpContext ))
             {
                 var name = httpContext.User.Identity.Name;
                 using (var db = new SomeDataContext())
                 {
                     var userPoints = db.Users
                                        .Where( u => u.UserName == name )
                                        .Select( u => u.Points )
                                        .SingleOrDefault();
                 }
                 return (userPoints >= PointsRequired);
             }
             return false;
        }
    }
    

    用作

    [PointAuthorize( PointsRequired = 50 )]
    public ActionResult Comment( string comment )
    {
    }