您的位置:首页 > 编程语言 > ASP

ASP.NET MVC 中如何实现基于角色的权限控制

2010-02-27 09:33 1051 查看
在ASP.NET MVC中,通过使用其所提供的内置

[Authorize]
public ActionResult Index()

标记的方式,可以实现所标记的ACTION必须是认证用户才能访问;

通过使用

[Authorize(Users="username")]

的方式,可以实现所标记的ACTION必须是某个具体的用户才能访问,以上两种方式使用起来非常方便,在NeedDinner示例程序中已有具休的实现过程,

但是,我们在实际的应用中所使用的大都是基于角色(Roles)的认证方式,NeedDinner中却未给出,本文给出具体实现(基于ASP.NET Forms验证)过程:

step 1
在完成UserName和Password认证后,向客户端写入认证Cookie

代码

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie == null || authCookie.Value == "")
{
return;
}
FormsAuthenticationTicket authTicket = null;
try
{
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
}
catch
{
return;
}
string[] roles = authTicket.UserData.Split(new char[] { ';' });
if (Context.User != null)
{
Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, roles);
}
}

step 3

这样以来,就可以使用实现以下效果

  [Authorize(Roles="admin")]
public ActionResult Index(int ? page)

非常方便!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: