中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

ASP.NET.4.5.1+MVC5.0設置系統角色與權限
來源:易賢網 閱讀:2691 次 日期:2015-02-05 14:29:34
溫馨提示:易賢網小編為您整理了“ASP.NET.4.5.1+MVC5.0設置系統角色與權限”,方便廣大網友查閱!

這篇文章主要介紹了ASP.NET.4.5.1+MVC5.0設置系統角色與權限的部分內容,后續我們將繼續討論這個話題,希望小伙伴們喜歡。

數據結構

名單

ASP.NET.4.5.1+MVC5.0設置系統角色與權限

權限分配

名單1

1.在項目中新建文件夾Helpers

2.在HR.Helpers文件夾下添加EnumMoudle.Cs

代碼如下:

namespace HR.Helpers

{

public enum EnumMoudle

{

/// <summary>

/// 模塊

/// </summary>

[EnumTitle("用戶管理")]

SysUserManage_Role = 102,

[EnumTitle("機構管理")]

Department = 201,

[EnumTitle("人事資料")]

Employees = 301,

[EnumTitle("系統管理")]

BaseInfo = 404,

}

}

3.在HR.Helpers文件夾下添加ControllerBase.Cs

代碼如下:

namespace HR.Helpers

{

public class ControllerBase : Controller

{

/// <summary>

/// 操作人,傳IP....到后端記錄

/// </summary>

public virtual Operater Operater

{

get

{

return null;

}

}

/// <summary>

/// 分頁大小

/// </summary>

public virtual int PageSize

{

get

{

return 15;

}

}

protected ContentResult JsonP(string callback, object data)

{

var json = Newtonsoft.Json.JsonConvert.SerializeObject(data);

return this.Content(string.Format("{0}({1})", callback, json));

}

/// <summary>

/// 當彈出DIV彈窗時,需要刷新瀏覽器整個頁面

/// </summary>

/// <returns></returns>

public ContentResult RefreshParent(string alert = null)

{

var script = string.Format("<script>{0}; parent.location.reload(1)</script>", string.IsNullOrEmpty(alert) ? string.Empty : "alert('" + alert + "')");

return this.Content(script);

}

public new ContentResult RefreshParentTab(string alert = null)

{

var script = string.Format("<script>{0}; if (window.opener != null) {{ window.opener.location.reload(); window.opener = null;window.open('', '_self', ''); window.close()}} else {{parent.location.reload(1)}}</script>", string.IsNullOrEmpty(alert) ? string.Empty : "alert('" + alert + "')");

return this.Content(script);

}

/// <summary>

/// 用JS關閉彈窗

/// </summary>

/// <returns></returns>

public ContentResult CloseThickbox()

{

return this.Content("<script>top.tb_remove()</script>");

}

/// <summary>

/// 警告并且歷史返回

/// </summary>

/// <param name="notice"></param>

/// <returns></returns>

public ContentResult Back(string notice)

{

var content = new StringBuilder("<script>");

if (!string.IsNullOrEmpty(notice))

content.AppendFormat("alert('{0}');", notice);

content.Append("history.go(-1)</script>");

return this.Content(content.ToString());

}

public ContentResult PageReturn(string msg, string url = null)

{

var content = new StringBuilder("<script type='text/javascript'>");

if (!string.IsNullOrEmpty(msg))

content.AppendFormat("alert('{0}');", msg);

if (string.IsNullOrWhiteSpace(url))

url = Request.Url.ToString();

content.Append("window.location.href='" + url + "'</script>");

return this.Content(content.ToString());

}

/// <summary>

/// 轉向到一個提示頁面,然后自動返回指定的頁面

/// </summary>

/// <param name="notice"></param>

/// <param name="redirect"></param>

/// <returns></returns>

public ContentResult Stop(string notice, string redirect, bool isAlert = false)

{

var content = "<meta http-equiv='refresh' content='1;url=" + redirect + "' /><body style='margin-top:0px;color:red;font-size:24px;'>" + notice + "</body>";

if (isAlert)

content = string.Format("<script>alert('{0}'); window.location.href='{1}'</script>", notice, redirect);

return this.Content(content);

}

/// <summary>

/// 在方法執行前更新操作人

/// </summary>

/// <param name="filterContext"></param>

public virtual void UpdateOperater(ActionExecutingContext filterContext)

{

if (this.Operater == null)

return;

WCFContext.Current.Operater = this.Operater;

}

public virtual void ClearOperater()

{

//TODO

}

/// <summary>

/// AOP攔截,在Action執行后

/// </summary>

/// <param name="filterContext">filter context</param>

protected override void OnActionExecuted(ActionExecutedContext filterContext)

{

base.OnActionExecuted(filterContext);

if (!filterContext.RequestContext.HttpContext.Request.IsAjaxRequest() && !filterContext.IsChildAction)

RenderViewData();

this.ClearOperater();

}

protected override void OnActionExecuting(ActionExecutingContext filterContext)

{

this.UpdateOperater(filterContext);

base.OnActionExecuting(filterContext);

//在方法執行前,附加上PageSize值

filterContext.ActionParameters.Values.Where(v => v is Request).ToList().ForEach(v => ((Request)v).PageSize = this.PageSize);

}

/// <summary>

/// 產生一些視圖數據

/// </summary>

protected virtual void RenderViewData()

{

}

/// <summary>

/// 當前Http上下文信息,用于寫Log或其他作用

/// </summary>

public WebExceptionContext WebExceptionContext

{

get

{

var exceptionContext = new WebExceptionContext

{

IP = Fetch.UserIp,

CurrentUrl = Fetch.CurrentUrl,

RefUrl = (Request == null || Request.UrlReferrer == null) ? string.Empty : Request.UrlReferrer.AbsoluteUri,

IsAjaxRequest = (Request == null) ? false : Request.IsAjaxRequest(),

FormData = (Request == null) ? null : Request.Form,

QueryData = (Request == null) ? null : Request.QueryString,

RouteData = (Request == null || Request.RequestContext == null || Request.RequestContext.RouteData == null) ? null : Request.RequestContext.RouteData.Values

};

return exceptionContext;

}

}

/// <summary>

/// 發生異常寫Log

/// </summary>

/// <param name="filterContext"></param>

protected override void OnException(ExceptionContext filterContext)

{

base.OnException(filterContext);

var e = filterContext.Exception;

LogException(e, this.WebExceptionContext);

}

protected virtual void LogException(Exception exception, WebExceptionContext exceptionContext = null)

{

//do nothing!

}

}

public class WebExceptionContext

{

public string IP { get; set; }

public string CurrentUrl { get; set; }

public string RefUrl { get; set; }

public bool IsAjaxRequest { get; set; }

public NameValueCollection FormData { get; set; }

public NameValueCollection QueryData { get; set; }

public RouteValueDictionary RouteData { get; set; }

}

}

4.在項目文件夾中新建ControllerBase.cs

代碼如下:

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.在項目中新建RoleControllerBase.cs

代碼如下:

namespace HR

{

public class RoleControllerBase : ControllerBase

{

SystemUserRepository sysuserrepository = new SystemUserRepository();

/// <summary>

/// 用戶權限

/// </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方法執行前沒有權限提示信息

/// </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("您沒有權限!", "/default/ng");

else

filterContext.Result = Content("您沒有權限!");

}

}

}

}

}

}

6.在每個Controller繼承RoleControllerBase類

public class EmployeesController : RoleControllerBase

7.在HR.Helpers文件夾下添加PermissionAttribute.Cs ,并繼承 FilterAttribute, IActionFilter

代碼如下:

namespace HR.Helpers

{

public class PermissionAttribute : FilterAttribute, IActionFilter

{

public List<EnumMoudle> Permissions { get; set; }

public PermissionAttribute(params EnumMoudle[] parameters)

{

Permissions = parameters.ToList();

}

public void OnActionExecuted(ActionExecutedContext filterContext)

{

//throw new NotImplementedException();

}

public void OnActionExecuting(ActionExecutingContext filterContext)

{

//throw new NotImplementedException();

}

}

}

8.然后在Controller或者Action方法加上驗證

代碼如下:

[Permission(EnumMoudle.Employees),Authorize, ValidateInput(false)]

[Permission(EnumMoudle.SysUserManage_Role)]

9.在用戶管理Controller中添加權限分配,修改方法

代碼如下:

#region 添加管理員

/// <summary>

/// 添加頁

/// </summary>

/// <param name="model">管理員實體類</param>

/// <returns></returns>

[Authorize]

public ActionResult Add()

{

var moudleList = EnumHelper.GetItemValueList<EnumMoudle>();

this.ViewBag.MoudleList = new SelectList(mouldeList, "Key", "Value");

return View();

}

/// <summary>

/// 添加事件

/// </summary>

/// <param name="model">實體類</param>

/// <param name="fc"></param>

/// <returns></returns>

[Authorize, HttpPost, ValidateInput(false)]

public ActionResult Add(SystemUser model, FormCollection fc)

{

model.BusinessPermissionString = fc["MoudelList"];

model.State = 1;

model.CreateTime = DateTime.Now;

systemuserrepository.SaveOrEditModel(model);

return RedirectToAction("UserList");

}

#endregion

//修改權限

[Authorize, AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]

public ActionResult Edit(int id, FormCollection fc)

{

var model = systemuserrepository.GetModel(id);

if (model != null)

{

string password = model.PassWord;

if (Request.Form["PassWord"] != "")

{

model.BusinessPermissionString = fc["MoudleList"];

UpdateModel(model);

systemuserrepository.SaveOrEditModel(model);

}

else

{

model.BusinessPermissionString = fc["MoudleList"];

UpdateModel(model);

model.PassWord = password;

systemuserrepository.SaveOrEditModel(model);

}

return RedirectToAction("userlist");

}

else

return View("404");

}

#endregion

代碼如下:

[Authorize]

public ActionResult Edit(int id)

{

var model = systemuserrepository.GetModel(id);

if (model != null)

{

var moudleList = EnumHelper.GetItemValueList<EnumBusinessPermission>();

this.ViewBag.MoudleList = new SelectList(moudleList, "Key", "Value", string.Join(",", model.BusinessPermissionString.ToString()));

return View(model);

}

else

return View("404");

}

以上就是本文的全部內容了,后續我們將持續更新,小伙伴們是否喜歡本系列文章呢?

更多信息請查看IT技術專欄

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲美女中出| 欧美亚洲动漫精品| 欧美韩国在线| 亚洲人久久久| 免播放器亚洲一区| av成人激情| 国产精品久久久久aaaa樱花| 性伦欧美刺激片在线观看| 亚洲国产aⅴ天堂久久| 欧美三区美女| 久久精品1区| 影音先锋久久久| 国产精品久久久久aaaa| 麻豆国产精品777777在线| 在线视频亚洲欧美| 韩国精品久久久999| 欧美日韩免费观看一区三区 | 久久精品官网| 99热这里只有成人精品国产| 国产在线国偷精品产拍免费yy| 欧美国产精品人人做人人爱| 午夜在线不卡| 一本色道久久综合狠狠躁篇的优点 | 久久深夜福利免费观看| 一区二区三区精密机械公司| 亚洲国产精品一区二区三区| 欧美日韩精品高清| 久久久噜噜噜久久中文字免| 亚洲一级免费视频| 亚洲精品综合精品自拍| 狠狠色综合色区| 国产精品综合视频| 国产精品成人一区二区三区夜夜夜| 久久久久久有精品国产| 亚洲欧美日韩国产另类专区| 99精品欧美一区二区蜜桃免费| 狠狠久久婷婷| 国产精品尤物福利片在线观看| 欧美成人精品在线| 久热精品在线视频| 久久精品毛片| 欧美一区二区三区视频在线观看 | 亚洲一区二区精品在线| 亚洲免费观看| 91久久精品国产91性色tv| 狠狠色香婷婷久久亚洲精品| 国产一区二区三区高清播放| 国产日韩一区二区| 国产亚洲激情在线| 国产日韩一区| 国产免费观看久久黄| 国产精品欧美日韩久久| 国产精品色一区二区三区| 国产精品久久久久久久久动漫 | 久久av一区二区三区| 亚洲欧美日韩中文播放| 亚洲欧洲av一区二区| 亚洲在线观看视频网站| 亚洲综合三区| 久久久精品国产免大香伊| 久久香蕉国产线看观看网| 美女网站在线免费欧美精品| 麻豆精品一区二区av白丝在线| 老司机午夜精品视频| 欧美精品粉嫩高潮一区二区 | 欧美激情一区二区久久久| 女仆av观看一区| 欧美噜噜久久久xxx| 欧美日韩中文字幕日韩欧美| 国产精品人人爽人人做我的可爱| 国产女优一区| 亚洲国产日韩欧美一区二区三区| 亚洲日韩第九十九页| 亚洲一区二区三区精品在线观看| 亚洲欧美国产日韩中文字幕| 久久久久在线观看| 欧美日产国产成人免费图片| 国产免费成人| 日韩午夜av在线| 欧美影院视频| 欧美日韩国产一区精品一区| 国产日韩在线不卡| 日韩亚洲在线观看| 久久久www成人免费无遮挡大片| 欧美激情视频一区二区三区不卡| 国产精品久久久久久亚洲调教 | 久久久亚洲精品一区二区三区| 久久综合伊人77777尤物| 欧美日韩在线大尺度| 国产综合自拍| 亚洲午夜激情网页| 久久伊人免费视频| 国产精品视频在线观看| 最新国产の精品合集bt伙计| 亚洲自拍偷拍视频| 欧美高清视频在线观看| 国产亚洲精品一区二区| 亚洲三级观看| 久久综合成人精品亚洲另类欧美| 欧美日韩免费观看一区三区| 国内精品久久久久影院色| 一二三四社区欧美黄| 嫩草国产精品入口| 国内激情久久| 亚洲欧洲综合| 日韩视频专区| 欧美电影免费观看高清完整版| 久久天堂精品| 国产精品视频福利| 日韩亚洲视频在线| 老色鬼精品视频在线观看播放| 国产女同一区二区| 亚洲专区一区| 国产精品国产三级国产普通话蜜臀| 在线成人免费视频| 久久国产精品99国产精| 国产精品拍天天在线| 一本色道久久综合亚洲91| 欧美成人在线免费视频| 欲色影视综合吧| 久久久久国产精品一区| 国产一区二区三区四区| 欧美在线免费观看| 国产深夜精品| 欧美在线不卡视频| 国产老女人精品毛片久久| 亚洲欧美国产高清| 国产精品久久中文| 亚洲男人的天堂在线| 国产九区一区在线| 久久国产精品99精品国产| 国产一区二区三区在线观看精品| 欧美一区二区三区电影在线观看| 国产精品区一区| 欧美一区二区三区在| 国产真实久久| 老司机精品视频一区二区三区| 在线成人性视频| 欧美国产免费| 一区二区三区精品| 国产精品女主播| 久久全球大尺度高清视频| 亚洲国产婷婷综合在线精品| 欧美精品一区二区蜜臀亚洲| 一本色道久久综合| 国产精品一二三| 久久综合图片| 一区二区三区视频在线播放| 国产伦精品一区二区三区高清版| 久久久久久久综合狠狠综合| 亚洲精品久久久久久久久久久久久 | 一区二区三区成人| 国产精品私人影院| 久久久久久久综合日本| 日韩香蕉视频| 国产亚洲一区在线| 欧美国产一区视频在线观看| 亚洲午夜伦理| 狠狠做深爱婷婷久久综合一区 | 伊人久久婷婷色综合98网| 欧美福利在线| 欧美亚洲三级| 亚洲精品一二三区| 国产欧美一区二区色老头| 欧美多人爱爱视频网站| 性一交一乱一区二区洋洋av| 亚洲激情网站| 国产综合激情| 国产精品久久久久久超碰 | 国产在线不卡精品| 欧美激情精品久久久久久| 午夜精品久久久久久久99樱桃| 亚洲国产91| 国产欧美日韩在线观看| 欧美激情亚洲自拍| 久久免费国产| 欧美在线视频导航| 亚洲视频一区二区| 91久久精品一区| 国内精品美女在线观看| 国产精品乱子久久久久| 欧美电影电视剧在线观看| 欧美一级视频免费在线观看| 99视频超级精品| 在线观看福利一区| 国产日韩欧美在线| 国产精品乱码久久久久久| 欧美国产精品中文字幕| 久久在线观看视频| 欧美一区成人| 亚洲女同在线| 亚洲一区视频在线观看视频| 99精品热视频只有精品10| 亚洲福利av| 永久免费毛片在线播放不卡| 国产一区二区三区在线观看精品 | 在线观看视频一区二区欧美日韩 | 亚洲国产精品成人| 在线观看欧美日韩| 国内免费精品永久在线视频|