ASP.NET MVC - 如何根据登录用户的角色权限隐藏或显示链接/按钮?

2024-03-21

我正在使用 ASP.NET MVC4。

这是我的用户角色

1. Administrator
2. L1 Admin
3. L2 Admin

管理员组用户有设置权限(用于添加、权限设置)。 查看日志、错误报告等

如果用户是管理员组的成员,他只能看到与上述设置相关的菜单。

我有一个菜单表,上面有菜单详细信息。有一些功能(如删除、编辑)根据当前用户的角色显示,并且在顶部菜单中不可用。列出数据时,删除、编辑链接放置在表格内。这也包括在内,对于该类型的条目,IsVisible 为 false。

MenuID - MenuName - Controller - Action - ParentID - IsVisible

我有一个 roleMenu 表,其中有分配给每个角色的菜单。

RoleID - MenuID

如果管理员正在登录,他可以看到所有菜单。 如果L1Admin正在登录,他只能看到分配给他的菜单。

我创建了一个用于身份验证的自定义属性,然后查询数据库并根据控制器和操作(表菜单加入角色菜单)获取用户的权限。因此,如果用户尝试通过在浏览器中键入内容来通过 URL 访问操作,我可以限制请求。

如果我以 L1Admin 身份进入,我只能看到列表页面并且菜单已正确创建。 在我用于列表的列表页面中。那么如何根据登录用户的权限隐藏编辑/详细信息链接。

 <div style="float: left">
        <table width="50%">
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Name)
                </th>
                <th>
                </th>
            </tr>
            @foreach (var item in Model)
            {
                <tr>
                    <td style="width:30%;">
                        @Html.DisplayFor(modelItem => item.Name)
                    </td>
                    <td style="width:20%;">
// I need to hide EDIT/DELETE based on the permission setting of Current logged in user.
                        @Html.ActionLink("Edit", "Edit", new { id = item.ID }) | 
                        <a href="Server/@item.ID">Details</a> |
                        @Html.ActionLink("Delete", "Delete", new { id = item.ID })
                    </td>
                </tr>
            }
        </table>
    </div>

提前致谢。

EDIT

我将权限详细信息存储在数据库中。


例如,您可以按如下方式执行此操作:

@if (ViewContext.HttpContext.User.IsInRole("Your role"))
{
    // Do something here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC - 如何根据登录用户的角色权限隐藏或显示链接/按钮? 的相关文章

  • 函数“sum”的隐式声明在 C99 中无效

    我一直在寻找解决方案 但没有找到任何有帮助的东西 我收到以下错误 Implicit declaration of function sum is invalid in C99 Implicit declaration of function
  • 为什么模板类的静态成员不唯一

    看一下下面的代码 include
  • 如何将动态数据写入 MVC 3 Razor 中的页面布局?

    我有带有 Razor 引擎的 MVC 3 C 项目 将动态数据写入 Layout cshtml 的方法和最佳实践是什么 例如 也许我想在网站的右上角显示用户名 该名称来自会话 数据库或基于用户登录的任何内容 更新 我也在寻找将某些数据渲染到
  • 从 unsigned char* 到 char* 的转换无效

    这是一个代码 1 int main int argc char argv 2 3 signed char S psc 4 unsigned char U pusc 5 char C pc 6 7 C S 8 C U 9 10 pc psc
  • ptrace和waitpid有什么关系?

    我正在练习使用ptrace但我不太了解它和之间的关系waitpid 这是我的测试程序 int main int argc char argv pid t pid 22092 if ptrace PTRACE ATTACH pid NULL
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 公共基类打破了元组的空基类优化

    gcc 4 7 1 对元组进行空基类优化 我认为这是一个非常有用的功能 然而 这似乎有一个意想不到的限制 include
  • 如何检查给定调用站点的重载决策集

    如何检查重载解析集 我在多个调用站点中使用了 4 个相互竞争的函数 在一个调用站点中 我期望调用一个函数 但编译器会选择另一个函数 我不知道为什么 这不是微不足道的 为了了解发生了什么 我正在使用enable if disable if打开
  • C# 中不区分大小写的替换不使用正则表达式?

    有没有一种方法可以在不使用 C 中的正则表达式的情况下对字符串进行不区分大小写的替换 像这样的东西 string x Hello x x Replace hello hello world 你可以尝试类似的东西 string str Hel
  • 使用 (float&)int 进行类型双关可以正常工作,(float const&)int 会像 (float)int 一样转换吗?

    VS2019 发布 x86 template
  • Bazel:将编译标志添加到默认 C++ 工具链

    我想向默认的 C 工具链添加一些编译器和链接器标志 以便我构建的所有目标 本地或导入 共享它们 我知道可以定义我自己的工具链 但我不想这样做 因为它非常复杂且容易出错 理想情况下我想要这样的东西 cc toolchain cc defaul
  • 在新的 ASP.NET MVC 5 项目中更新 NuGet 包引用后,如何修复与 JSON.NET 的程序集版本冲突?

    我在 VS 2013 更新 1 中创建了一个新的 ASP NET MVC 5 Web 项目 然后更新了所有 NuGet 包 当我构建项目时 我收到以下警告 警告 MSB3243 无法解决 Newtonsoft Json Version 6
  • C# 中的类和模块有什么用

    有人可以解释一下类和模块之间的区别吗 你什么时候使用其中一种而不是另一种 我正在使用 C 更新 我的意思是相当于 VB 模块的 C 版本 这在很大程度上取决于您所指的 模块 Visual Basic 的模块 C 中没有真正等效的 VB Ne
  • 什么是 C++11 扩展 [-Wc++11-extensions]

    我需要一些帮助来了解此错误发生的位置 警告 非静态数据成员的类内初始化是 C 11 扩展 Wc 11 extensions 这是它来自的代码部分 typedef struct Hand bool straight false bool fl
  • 为什么在 C++ 类中的数据成员上使用像 m_ 这样的前缀?

    许多 C 代码使用语法约定来标记数据成员 常见的例子包括 m memberName对于公共成员 在所有使用公共成员的情况下 memberName对于私人会员或所有会员 其他人尝试强制使用this gt member每当使用数据成员时 根据我
  • 提升shared_from_this<>()

    有人可以用几句话概括一下如何提升shared from this lt gt 应该使用智能指针 特别是从使用绑定函数在 io service 中注册处理程序的角度来看 编辑 一些回复要求提供更多背景信息 基本上 我正在寻找 陷阱 即人们使用
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 查找文本文件中每行的行大小

    如何计算每行中的字符或数字数量 是否有类似 EOF 的东西更像是行尾 您可以遍历行中的每个字符并不断增加计数器直到行尾 n 遇到 确保以文本模式打开文件 r 而不是二进制模式 rb 否则流不会自动将不同平台的行结束序列转换为 n 人物 这是
  • 使用 List.Contains 方法为 LINQ 构建表达式树

    Problem 我正在重构一些LINQ查询我们的 Web 应用程序中的多个报告 并且我尝试将一些重复的查询谓词移至它们自己的中IQueryable扩展方法 以便我们可以将它们重新用于这些报告以及将来的报告 正如您可能推断的那样 我已经重构了

随机推荐

  • 在 WinForms 中更新 BindingSource 不会更新数据源集合

    我想在中显示自定义集合DataGridView在 Windows 窗体应用程序中 这个自定义集合实现了ICollection and IEnumerable 我已经设置了一个BindingSource 使用集合作为 DataSource 属
  • 启动时将 par 重置为默认值

    通常 当我制作自己的绘图函数时 我会制作一个构造 op lt par mypar myvalue on exit par op 这是恢复的标准方法par到之前的值 想象一下 您一直在运行一些确实更改了某些参数的函数 并且您需要在 R 中启动
  • Ruby on Rails:没有视图的操作

    我有一个我认为非常简单的问题 我有 PhP 背景 并且过去一直这样做 所以我可能以错误的方式看待这个问题 我正在尝试在 RoR 中创建一个 ajax 处理程序 当用户单击按钮时 javascript 会触发 POST 并使用 jQuery
  • 编写 django-piston 客户端的正确方法是什么?

    我已经阅读了很多关于 django piston 的文章 并使用它为我正在开发的应用程序制作 API 但我对世界的客户端很着迷 我已经编写了处理程序和 uri 映射 并且可以随心所欲地返回 JSON 或 XML 我陷入困境的是现在该怎么办
  • cygwin下无法访问jarfile

    我知道这里有很多 无法访问 jarfile 问题 但我确实觉得这足以保证它自己的线程 我正在编写一个演练 该演练的一部分涉及安装 Cygwin 并运行 jar 文件 问题是这个 jar 文件需要从多个目录调用 而不是让我的读者每次需要运行它
  • 为什么 MATLAB 中允许使用多个连续的加号语法?

    有谁知道为什么这在 MATLAB 中有效 gt gt 1 2 ans 3 来自 C Python Java 等语言的编码 我发现这根本就行得通 这是最违反直觉的 想必解析器有一些我不明白的重要内容 有一个区别plus https mathw
  • python 中的前导零[重复]

    这个问题在这里已经有答案了 Python 似乎能够接受除 08 或 09 之外的任何数字的前导零 例如 a 04 在解释器中工作但是 a 08 returns SyntaxError invalid token 我在 OSX 上使用 pyt
  • 类常量的 PHP 表达式

    我试图找出为什么我会遇到此代码的异常 class Test const test Two rows 我在包含 const 的行上遇到异常 解析错误 语法错误 意外的 期望 或 在 home BZUMUL prog php 第 X 行 我本来
  • Java 客户端/服务器套接字

    我从 java 套接字开始 并且有奇怪的 缺乏 输出 这是我的套接字方法的来源 客户端源码 public void loginToServer String host String usnm try Socket testClient ne
  • Indy 可以运行 Javascript 吗?

    有一种名为 AnyChart 的软件产品 非常适合在网页中嵌入基于 Flashed 的图表 AnyCharts 还可以导出为 PNG 文件格式 这是一个例子
  • 如何使用 sublime 在终端上运行 ruby

    我什至不确定这个问题是否正确 我正在以下链接上编写 ruby 教程 www youtube com watch v Dji9ALCgfpM 他在sublime上编写代码 并在终端上显示运行的代码 我曾经在 Integrated ruby i
  • 带选择标签的 dataTables 列过滤插件

    我正在使用数据表 v1 92 以及列过滤插件 v1 5 0 问题 我需要为单个列过滤创建下拉列表 其标记将是
  • 如何上传图片并将其保存到数据库中? [复制]

    这个问题在这里已经有答案了 我必须使用 JavaScript 创建一个表单 用户将上传一个 JPG 文件并与其他信息 例如姓名 电子邮件等 一起提交 当用户单击 提交 时 表单中的所有信息都将加载到值对象中 对于图像文件我将其设置为byte
  • 在 JavaFX 中显示字符串/标签

    我需要帮助弄清楚如何在程序中显示文本 以便它可以在我创建的多边形形状的中间显示 停止 我想做的是创建一个停车标志 我已经负责创建和显示该停止标志 所以现在我只需要在 t 中显示 停止 package application public c
  • 在 django-rest 框架中使用原始 SQL?

    我使用 Django 1 8 和带有表和物化视图的 Postgres 9 4 后端 我有一个 80GB 的表 名为spending包含支出项目 每个项目都有一个组织代码和一个区域代码 class Prescription models Mo
  • C++11 中的可变参数模板和多重继承

    我正在努力实现这样的目标 我有一个模板化基类 我想动态继承它 template
  • MSVC 的 open_memstream 的等效项

    我在用打开内存流在我的一个库中 但我想将该库移植到 MSVC 似乎没有可用的等效功能 但是有足够相似的功能吗 What 打开内存流所做的是它需要一个 char 目的地和大小并返回一个您可以写入的 FILE 数据存储在动态分配的缓冲区中 可从
  • 如何在 OS X 中包含 FFI?

    我在构建时遇到问题这个项目 https github com metaeducation ren c启用 FFI 扩展 为了隔离问题 我正在尝试编译这个例子 http www chiark greenend org uk doc libff
  • OSError:图像文件被截断

    当我处理一堆图像时 其中一个图像出现此错误 File home tensorflowpython firstmodel yololoss py line 153 in data generator image box get random
  • ASP.NET MVC - 如何根据登录用户的角色权限隐藏或显示链接/按钮?

    我正在使用 ASP NET MVC4 这是我的用户角色 1 Administrator 2 L1 Admin 3 L2 Admin 管理员组用户有设置权限 用于添加 权限设置 查看日志 错误报告等 如果用户是管理员组的成员 他只能看到与上述