一、特性类

    /// <summary>
/// 访问权限控制属性。
/// </summary>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class ActionAttribute : Attribute
{
/// <summary>
/// 初始化Action类的新实例。
/// </summary>
public ActionAttribute(string id)
{
this.ActionID = id;
} /// <summary>
/// 操作标识。
/// </summary>
public string ActionID { get; set; }
}

二、拦截器代码

        /// <summary>
/// 全局拦截器
/// </summary>
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext); Type controllerType = filterContext.Controller.GetType();
MethodInfo methodInfo = controllerType.GetMethod(filterContext.ActionDescriptor.ActionName, BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance);
Attribute customAttribute = Attribute.GetCustomAttribute(methodInfo, typeof(GTC.Web.Attributes.ActionAttribute));
GTC.Web.Attributes.ActionAttribute actionAttribute = customAttribute == null ? null : (GTC.Web.Attributes.ActionAttribute)customAttribute; BindCrumbs(actionAttribute.ActionID);
} /// <summary>
/// 绑定面包屑
/// </summary>
/// <param name="functionKey"></param>
private void BindCrumbs(string functionKey)
{
ArrayList arr = new ArrayList(); var thisAction = GetFunctions().FirstOrDefault(p => p.FActionID == functionKey); if (thisAction != null)
{
arr.Add(thisAction.FActionName); QueryCrumbs(thisAction.FParentActionID, ref arr); arr.Reverse();
ViewBag.Menu = "当前位置 :" + string.Join("", (string[])arr.ToArray(typeof(string)));
}
} private void QueryCrumbs(string parentId, ref ArrayList arr)
{
var parentAction = GetFunctions().FirstOrDefault(p => p.FActionID == parentId); if (parentAction != null)
{
arr.Add("->"); if (parentAction.FParentActionID == "")
{
arr.Add(parentAction.FActionName);
}
else
{
arr.Add("<a href='" + parentAction.FActionUrl + "'>" + parentAction.FActionName + "</a>");
QueryCrumbs(parentAction.FParentActionID, ref arr);
}
}
} public static List<Action> GetFunctions()
{
//获取系统所有权限
}

三、在方法上加标签[Attributes.Action(ActionID = "5201314")]

C# MVC 页面面包屑以及相应的权限验证操作的更多相关文章

  1. ASP.NET MVC View 和 Web API 的基本权限验证

    ASP.NET MVC 5.0已经发布一段时间了,适应了一段时间,准备把原来的MVC项目重构了一遍,先把基本权限验证这块记录一下. 环境:Windows 7 Professional SP1 + Mi ...

  2. Spring MVC 使用拦截器优雅地实现权限验证功能

    在上一篇 SpringAOP 实现功能权限校验功能 中虽然用AOP通过抛异常,请求转发等勉强地实现了权限验证功能,但感觉不是那么完美,应该用拦截器来实现才是最佳的,因为拦截器就是用来拦截请求的,在请求 ...

  3. 【3】.net MVC 使用IPrincipal进行Form登录即权限验证

    1.在MVC项目中添加用户类,可以根据实际项目需求添加必要属性 public class UserData { /// <summary> /// ID /// </summary& ...

  4. Web用户的身份验证及WebApi权限验证流程的设计和实现 asp.net mvc AllowAnonymous 不起作用, asp.net mvc 匿名访问

    原文地址: https://blog.csdn.net/zjlovety/article/details/17095627 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个 ...

  5. ASP.NET MVC 在项目中使用面包屑导航

    给框架添加一个面包屑导航 1.创建一个类 using System; using System.Collections.Generic; using System.Linq; using System ...

  6. MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航

    上篇文章我们完成了 动态生成多级菜单 这个实用组件. 本篇文章我们要开发另一个实用组件:面包屑导航. 面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱 ...

  7. 爱上MVC3系列~开发一个站点地图(俗称面包屑)

    回到目录 原来早在webform控件时代就有了SiteMap这个东西,而进行MVC时代后,我们也希望有这样一个东西,它为我们提供了不少方便,如很方便的实现页面导航的内容修改,页面导航的样式换肤等. 我 ...

  8. Bootstrap <基础十八>面包屑导航(Breadcrumbs)

    面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式.以博客为例,面包屑导航可以显示发布日期.类别或标签.它们表示当前页面在导航层次结构内的位置. Bootstrap 中的面包屑导航( ...

  9. 学习使用 CSS3 制作网站面包屑导航效果

    作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...

随机推荐

  1. 问题 B: Prime Number

    题目描述 Output the k-th prime number. 输入 k≤10000 输出 The k-th prime number. 样例输入 10 50 样例输出 29 229 #incl ...

  2. Drools 7.4.1.Final参考手册(六) 用户手册

    用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...

  3. BZOJ 3779 重组病毒 LCT+线段树(维护DFS序)

    原题干(由于是权限题我就直接砸出原题干了,要看题意概述的话在下面): Description 黑客们通过对已有的病毒反编译,将许多不同的病毒重组,并重新编译出了新型的重组病毒.这种病毒的繁殖和变异能力 ...

  4. python类学习以及mro--多继承属性查找机制

    版权声明:本文为博主原创文章,未经博主允许不得转载. 还记得什么是新式类和旧式类吗? Python中,一个class继承于object,或其bases class里面任意一个继承于object,这个c ...

  5. 【Android入门】——模拟器的创建及常见问题汇总

    [前言] 刚刚接触Android,第一门课我们就来创建一个模拟器.安卓模拟器,简称AVD(Android Virtual Device),是安卓运行的虚拟设备.有了他以后,我们就不需要在连着安卓手机进 ...

  6. Hangman游戏源代码 --- python实现

    #hangman.py from PythonCard import model,dialog import random def find_letters(letter,a_string): loc ...

  7. web online ide &web online editor & web online playground & web online runtime

    web online ide &web online editor web online ide &web online editor & web online playgro ...

  8. 使用POI操作Excel

    首先要下载所需jar包, 官网:http://poi.apache.org ,POI支持office的所有版本 下载完后,打开“poi-bin-3.10.1-20140818”获取操作excel需要的 ...

  9. 用Web Service实现客户端图片上传到网站

    由于项目需要,通过本地客户端,把图片上传到网站.通过webservice. 这是客户端代码: private void btnimg_Click(object sender, EventArgs e) ...

  10. 部分经典IT书籍

    部分经典IT书籍 [系统,网路管理]1) Learning the Unix Operating System 1565923901 O'reilly/1997-4ed ***强力推荐给想入门unix ...