ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(2)_.Net教程
推薦:使用ASP.NET.4.5.1+MVC5.0 搭建一個(gè)包含 Ninject框架 項(xiàng)目這篇文章主要介紹了使用ASP.NET.4.5.1+MVC5.0 搭建一個(gè)包含 Ninject框架 項(xiàng)目的方法,需要的朋友可以參考下 1.創(chuàng)建一個(gè)空白解決方案 2.添加一個(gè)類庫 名稱為XXX.Domain 3.添加一個(gè)ASP.MVC 名稱為XXX.WebUI 4.選著空模版,勾選MVC核心引用 5.添加單元測(cè)試項(xiàng)目 XXX.UntiTes
代碼如下:
namespace HR
{
public abstract class ControllerBase:HR.Helpers.ControllerBase
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
}
}
5.在項(xiàng)目中新建RoleControllerBase.cs
代碼如下:
namespace HR
{
public class RoleControllerBase : ControllerBase
{
SystemUserRepository sysuserrepository = new SystemUserRepository();
/// <summary>
/// 用戶權(quán)限
/// </summary>
public virtual List<EnumMoudle> PermissionList
{
get
{
var permissionList = new List<EnumMoudle>();
return permissionList;
}
}
public string BusinessPermissionString { get; set; }
[NotMapped]
public List<EnumMoudle> BusinessPermissionList
{
get
{
if (string.IsNullOrEmpty(BusinessPermissionString))
return new List<EnumMoudle>();
else
return BusinessPermissionString.Split(",".ToCharArray()).Select(p => int.Parse(p)).Cast<EnumMoudle>().ToList();
}
set
{
BusinessPermissionString = string.Join(",", value.Select(p => (int)p));
}
}
/// <summary>
/// Action方法執(zhí)行前沒有權(quán)限提示信息
/// </summary>
/// <param name="filterContext"></param>
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var noAuthorizeAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AuthorizeIgnoreAttribute), false);
if (noAuthorizeAttributes.Length > 0)
return;
base.OnActionExecuting(filterContext);
bool hasPermission = true;
var permissionAttributes = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).Cast<PermissionAttribute>();
permissionAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).Cast<PermissionAttribute>().Union(permissionAttributes);
var attributes = permissionAttributes as IList<PermissionAttribute> ?? permissionAttributes.ToList();
if (permissionAttributes != null && attributes.Count() > 0)
{
string cookie = CookieHelper.GetValue("SystemUserID");
if (string.IsNullOrEmpty(cookie))
{
filterContext.Result = Content("您沒有登錄!");
}
else
{
int mid = int.Parse(CookieHelper.GetValue("SystemUserID"));
var model = sysuserrepository.GetModel(mid);
BusinessPermissionString = model.BusinessPermissionString;
hasPermission = true;
foreach (var attr in attributes)
{
foreach (var permission in attr.Permissions)
{
if (!BusinessPermissionList.Contains(permission))
{
hasPermission = false;
break;
}
}
}
if (!hasPermission)
{
if (Request.UrlReferrer != null)
filterContext.Result = this.Stop("您沒有權(quán)限!", "/default/ng");
else
filterContext.Result = Content("您沒有權(quán)限!");
}
}
}
}
}
}
6.在每個(gè)Controller繼承RoleControllerBase類
public class EmployeesController : RoleControllerBase
7.在HR.Helpers文件夾下添加PermissionAttribute.Cs ,并繼承 FilterAttribute, IActionFilter
分享:ASP.NET中的URL映射技巧在項(xiàng)目中經(jīng)常要進(jìn)行如下映射 將 http://yyjcw.com/a.aspx?name=llinzzi 映射到 http://yyjcw.com/llinzzi 首先要解決2個(gè)問題 第一是支持通配符的映射 URL映射是asp.net2.0新增的功能,不支持通配符 于是采用了NBEAR的 NBear.Web.Modules.UrlRewriteRules 進(jìn)行通配符映射
- 使用ASP.NET.4.5.1+MVC5.0 搭建一個(gè)包含 Ninject框架 項(xiàng)目
- ASP.NET中的URL映射技巧
- ADO.NET中的Connection對(duì)象詳解
- Asp.net配合easyui實(shí)現(xiàn)返回json數(shù)據(jù)實(shí)例
- ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名
- ASP.NET中MVC從后臺(tái)控制器傳遞數(shù)據(jù)到前臺(tái)視圖的方式
- .net使用自定義類屬性實(shí)例
- .NET實(shí)現(xiàn)在網(wǎng)頁中預(yù)覽Office文件的3個(gè)方法
- asp.net中控制反轉(zhuǎn)怎么理解?
- delphi選擇文件夾例子
- asp.net中C++單例實(shí)現(xiàn)問題分析
- 簡單理解Web Service三種實(shí)現(xiàn)方式
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 解讀asp.net點(diǎn)擊textbox自動(dòng)清除其中文字
- .NET下為百度文本編輯器UEditor增加圖片刪除功能示例
- ASP.NET調(diào)用oracle存儲(chǔ)過程實(shí)現(xiàn)快速分頁
- .NET 線程基礎(chǔ)的使用介紹
- 實(shí)現(xiàn).NET應(yīng)用程序的自動(dòng)更新
- 基于.Net中的數(shù)字與日期格式化規(guī)則助記詞的使用詳解
- Asp.net 對(duì)路徑的訪問被拒絕 解決方法的分析
- ASP.NET筆記之 viewstate與cache的使用
- asp.net將Execl讀到DataSet或DataTable中
- 使用存儲(chǔ)過程實(shí)現(xiàn)用戶登錄(含代碼)
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(2)
- 教程說明:
.Net教程-ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(2)
。