程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> .NET MVC 用戶權限管理實例教程

.NET MVC 用戶權限管理實例教程

編輯:關於C#
 

MVC框架的開發網站的利器,MVC框架也開始越來越流行了。對於.NET ,微軟也發布了MVC框架,做網站通常要涉及到用戶的權限管理,對於.NET MVC 框架的用戶權限管理又應該怎樣設置呢?下面通過示例講解一下怎樣實現.NET MVC 用戶權限管理。

查看微軟MSDN庫我們知道,ASP.NET MVC權限控制都是通過實現AuthorizeAttribute類的OnAuthorization方法。因此我們需要將一個類來繼承AuthorizeAttribute類,並實現OnAuthorization方法。如下面的代碼我們建一個CustomAuthorizeAttribute類
[cce_cs]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

///
/// Summary description for CustomAuthorizeAttribute
///

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
bool isAuthenticated=HttpContext.Current.Session["User"]==null?false:true;
if (!isAuthenticated)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "account", action = "login", returnUrl = filterContext.HttpContext.Request.Url, returnMessage = "您無權查看." }));
return;
}
base.OnAuthorization(filterContext);
}
}
[/cce_cs]

 

上面的代碼假設用戶登錄的標識是存儲Session中,key為USer,這樣通過判斷是否有這個標識作為是否登錄的判斷,當然這裡的用戶登錄標識只是示例,你完全可以根據自己的方法實現isAuthenticated的登錄判斷。如果沒有登錄,上面的代碼會重定向到登錄頁面。

因此我們現在有了CustomAuthorizeAttribute標簽,只需要給我們的Action方法打上[CustomAuthorizeAttribute] 標簽就可以了,如下面的代碼:
[cce_cs]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace SampleMVCWebsite.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/

[CustomAuthorize]
public ActionResult Index()
{
return View();
}

}
}
[/cce_cs]

這樣上面的代碼就會有這樣的效果:當訪問 HomeController 的 Index 方法的時候就會首先執行 CustomAuthorizeAttribute 類中的
OnAuthorization判斷是否登錄,如果沒有就跳到登錄頁面。

像上面這種方式是比較粗粒度的解決方案,由於是已經將定義好權限的固定代碼帶對應的Action上,所以無法實現用戶自定義權限控制。下一次教程講解.NET MVC基於角色的權限控制系統。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved