AuthorizeAttribute示例

using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Web;   
using System.Web.Mvc;   
namespace AuthTest.Models   
{   
    public class MyAuthAttribute : AuthorizeAttribute   
    {   
        // 只需重载此方法,模拟自定义的角色授权机制,推荐通过Idetity获取用户信息, 当然也可以通过Session获取,如果通过Session获取需要在验证的时候吧用户信息写入Session   
        protected override bool AuthorizeCore(HttpContextBase httpContext)   
        {   
            string currentRole = GetRole(httpContext.User.Identity.Name);   
            //string currentRole = GetRole(Session["user"].ToString()); 通过Session获取
            if(Roles.Contains(currentRole ) )   
                return true;   
            return base.AuthorizeCore(httpContext);   
        }   
   
        // 返回用户对应的角色, 在实际中, 可以从SQL数据库中读取用户的角色信息   
        private string GetRole(string name)   
        {   
            switch(name)   
            {   
                case "aaa":  return "User";   
                case "bbb": return "Admin";   
                case "ccc": return "God";   
                default: return "Fool";   
            }   
        }   
    }   
   
}
using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Web;   
using System.Web.Mvc;   
using System.Web.Security;   
using AuthTest.Models;   
namespace AuthTest.Controllers   
{   
    [HandleError]   
    public class HomeController : Controller   
    {   
        public ActionResult Index()   
        {   
            ViewData["Message"] = "欢迎使用 ASP.NET MVC!";   
            // 模拟用户成功登录   
            FormsAuthentication.SetAuthCookie("aaa", false);  
            //Session["user"]="aaa" 把用户信息写入Session 
            return View();   
        }   
   
        // 验证我们自定义的AuthorizeAttribute是否起作用,    
         // 此Action只能由角色为“God”的用户访问   
        [MyAuth(Roles="God")]   
        public ActionResult About()   
        {   
            return View();   
        }   
    }   
}
原文地址:https://www.cnblogs.com/answercard/p/5061279.html