存储/分配经过身份验证的用户的角色

2023-12-07

我正在升级站点以使用 MVC,并且正在寻找设置身份验证的最佳方法。

此时,我可以通过 Active Directory 进行登录:验证用户名和密码,然后设置身份验证 cookie。

如何在登录时存储用户的角色信息,以便我的控制器在用户浏览站点时看到这些角色?

[Authorize(Roles = "admin")]

我可以毫无问题地从 Active Directory 获取角色列表。我只是不知道将它们放在哪里以便控制器能够看到它们。


角色已添加到知识产权校长HttpContext 的。您可以创建一个通用主体,在构造函数中解析角色列表并将其设置为 HttpContext.User。然后可以通过以下方式访问 GenericPrincipalUser.IsInRole("role") or the [Authorize(Roles="role")]属性

执行此操作的一种方法(在 C# 中)是在创建身份验证票证时将您的角色作为逗号分隔的字符串添加到用户数据参数中

string roles = "Admin,Member";
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
  1,
  userId,  //user id
  DateTime.Now,
  DateTime.Now.AddMinutes(20),  // expiry
  false,  //do not remember
  roles, 
  "/");
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                                   FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);

然后从身份验证票证访问角色列表并从 Global.asax.cs 创建 GenericPrincipal

protected void Application_AuthenticateRequest(Object sender, EventArgs e) {
  HttpCookie authCookie = 
                Context.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (authCookie != null) {
      FormsAuthenticationTicket authTicket = 
                                  FormsAuthentication.Decrypt(authCookie.Value);
      string[] roles = authTicket.UserData.Split(new Char[] { ',' });
      GenericPrincipal userPrincipal =
                       new GenericPrincipal(new GenericIdentity(authTicket.Name),roles);
      Context.User = userPrincipal;
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储/分配经过身份验证的用户的角色 的相关文章

  • 使用 MVC 5 和实体框架的 jQuery 数据表

    我需要一些关于在控制器中放入什么内容的指导 以便我可以对 jQuery 数据表使用服务器端处理 我正在使用 MVC 5 和实体框架 示例位于 http datatablesmvc codeplex com documentation htt
  • MVC 操作过滤器和多线程

    我目前遇到了操作过滤器的线程问题 在我的应用程序上 我使用 ActionFilter 来执行每个操作的跟踪 此跟踪将提供统计信息 例如调用的持续时间 并记录参数被派往行动 实际的跟踪实现 由其他团队完成 使用 IDisposable 对象
  • 如何从 C# 中的两个列表中获取唯一对象?

    我有两个列表对象 例如 list1 id 101 name one id 102 name two id 103 name three list2 id 111 name one id 112 name two id 114 name fo
  • 如何在Web网格的列中编写IF条件

    我在 WEB GRID 列中创建 if 条件时遇到错误 所以 请帮助改进我的代码并解决我的问题 grid Column Status format item gt
  • TortoiseSVN 不要求身份验证?

    我已经在conf文件中设置了一个新的SVN存储库 运行SVNServe anon access none SVNServe 忠实地正确地做到了这一点 但是当我尝试使用 TortoiseSVN 浏览存储库时 它只是说不允许访问 它不应该要求我
  • 绑定到 ViewModel 时如何更新 Model?

    我有一个 HttpPost 操作方法签名如下 HttpPost public ActionResult Edit ExistingPostViewModel model Save the edited Post 现在 在过去 当我没有使用
  • 如何使用C#在asp.net中下载xml文件

    我正在使用网络应用程序ASP NET 与 MVC3 我是 mvc3 的新手 我的网页上有一个下载按钮 当我要单击下载按钮时 我希望能够打开该 XML 文件 我尝试过一些代码更改动作结果但我没有打开文件 通过使用下面提到的代码 我收到一个下载
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • 如何在asp.net中的按钮单击事件调用之前和之后调用javascript函数

    我在 ASP NET 中创建了 ButtonClick 函数 如下所示
  • 有没有办法让 Swashbuckle 将 OData 参数添加到 Web API 2 IQueryable 端点?

    我有一个支持 OData 查询的 ASP Net Web API 2 端点 是这样的 HttpGet Route public IQueryable
  • C# ASP.NET MVC:视图中的单行 If 子句?

    我遇到了一个小问题 并且无法解决它 我的看法是这样的 Try or
  • 如何在spring-security的SecurityContext中存储自定义信息?

    在我的应用程序中 我使用 LDAP 身份验证 但我还有 2 个远程服务 需要通过登录方法 用户名 密码 进行身份验证 该方法返回安全令牌 这使我能够调用其他方法 即我应该将安全令牌作为第一个参数传递给服务方法 所以我想在使用 LDAP 成功
  • 使用内存中的单元测试 .ToListAsync()

    下面是由于内存数据库集不支持 ToListAsync 而在 ShouldNotThrow 上失败的测试 我没有方便的确切措辞 但你明白了 如果它很重要 我正在尝试模拟实体框架版本提供的数据库集 6 1 3 TestFixture publi
  • java ee - 使用 servlet 对用户进行身份验证

    我刚刚开始学习java 还没有接触过java ee 我需要使用 servlet 来验证用户身份 请提供示例代码和技术文献 谢谢你 创建一个接受用户名 密码的 html 表单 将这些数据发布到 servlet 在 doPost 中读取这些数据
  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html
  • 设置国际货币格式

    我有一个 asp net 应用程序 我们正在 全球化 过程中 我将 currentculture 和 currentUICultre 设置为适当的值 并且货币按预期使用货币格式显示 即 FormatCurrency nPrice 产生 en
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 从 ASP .Net Web 服务访问 MSMQ 时出现权限错误

    我写了一个从消息队列读取的 Web 服务 这在卡西尼号下工作得很好 现在我已经在 IIS 下部署了该服务 当该服务尝试访问队列时 我收到一条错误消息 队列不存在或者您没有足够的权限来执行该操作 我已将 IIS 虚拟目录上的匿名访问用户设置为
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod
  • 通过移动应用程序使用 Moodle 进行身份验证

    我的移动应用程序需要登录 Moodle 以从 Web 服务获取 Json 数据并使用 Angular 显示它 为此 我需要传入用户名和密码并取回 Moodle Web 服务令牌 因此我的应用程序不需要再次登录 至少在令牌过期之前 这是 提出

随机推荐

  • geohash 和最大距离

    前 6 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 0 61km 前 5 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 2 5km 问 5 位长度的给定 geohash 的任何一对边
  • CodeIgniter:解析位于 javascript 中的动态语言标题

    我有一个需要本地化的 JavaScript 代码 即 function js proc var some data this text needs to be translated dynamically at runtime 所以我这样重
  • 设置“可见性”后未获取“RelativeLayout get Height()”

    我想要的是 当我单击仪表板按钮时 它将像滑动抽屉一样打开 打开后再次单击它 它将关闭 我使用这个自定义抽屉是因为 SlidingDrawer 已弃用 现在的问题是 它工作正常 除了第一次单击按钮时 它会打开得非常快 没有任何动画 但会正常关
  • 有没有办法在Python Selenium中通过属性查找元素?

    我得到了这样的 html 片段
  • 使用 WMI 和 C# 的 CPU 使用率

    如何使用 WMI 在 C 中检索当前 CPU 使用情况 我看过很多使用性能计数器的帖子 但我需要一个可以与远程计算机一起使用的解决方案 我还找到了一个VB解决方案here 但如果可能的话 我更愿意在 C 中完成此任务 至少可以说 WMI 的
  • Rust 不接收来自 C++ 的 UDP 消息

    我正在使用 UDP 创建服务器 客户端范例 但 Rust 服务器未接收 C 客户端消息 我已经能够成功地进行 Rust 服务器 Rust 客户端和 C 服务器 Rust 客户端通信 这让我相信我的 C 代码存在问题 或者在将 C 缓冲区发送
  • 为什么 x86-64 汇编中参数存储在寄存器中而不是堆栈中?

    在 x86 32 汇编中 参数存储在堆栈中 但在 x86 64 中 参数存储在寄存器中 这是什么原因呢 访问 CPU 寄存器比访问 RAM 快得多 由于 64 位 CPU 有更多通用寄存器 与 64 位无关 只是因为它们更新 更大 因此使用
  • 如何使用有效的 CSS 来定位 IE7 和 IE8?

    我想使用符合 W3C 的 CSS 来定位 IE7 和 IE8 有时修复一个版本的 CSS 并不能修复另一个版本的 CSS 我怎样才能实现这个目标 使用 HTML 和 CSS 明确定位 IE 版本 无需破解 如果您不想对 CSS 进行修改 请
  • 构建Word字段

    除了将文本插入和解析到空白 Word 字段之外 是否有任何方法可以使用 VBA 以编程方式将用户定义的字段和字段代码构建到我自己的模板中 此外 有没有办法让这些字段显示在可用字段列表中 我最近开发了一个使用 Word 的 MACROBUTT
  • 使用后台线程从 url 加载注释。移动或缩放地图视图之前不会显示图钉

    我使用后台线程从 url 加载注释 在移动或缩放地图视图之前 图钉不会显示 我如何更新我的视图 我的观点确实出现了 void viewDidAppear BOOL animated super viewDidAppear animated
  • static const int 和 static int const 有什么区别?

    In this answer使用的OP static int const var 5 在条件编译控制的上下文中 使用之间有区别吗static const int and static int const 例如 static const in
  • 检测 pygtk 中的 ctrl+click 按钮

    我想检测当用户单击按钮时是否按住 ctrl 点击 信号似乎没有向回调传递足够的信息来解决这个问题 如果您可以连接到button press event or button release event代替clicked the event传递
  • Android 对位图的噪点效果

    我正在编写一些函数来在位图上添加噪点效果 我发现类似的问题 向绘图添加噪点效果 位图输出Bitmap Bitmap createBitmap bitmap getWidth bitmap getHeight Bitmap Config AR
  • 反转字符串时间和空间复杂度

    我编写了不同的 python 代码来反转给定的字符串 但是 无法确定其中哪一个是有效的 有人可以指出这些算法在时间和空间复杂度上的差异吗 def reverse 1 s result for i in s result i result r
  • Rails 视图下拉列表中的日期格式

    我可以帮助您格式化视图中下拉列表中的日期字段 我的日期显示带有时间戳 我希望它们显示为 mm dd yyyy 在我的模型中 我有一个从表中选择日期字段的方法 def self get event dates event dates Ugra
  • 使用 mutate 和 for 循环(按变量名前缀)对多组变量进行 R rowSums

    我有多个变量按前缀 par fri gp 等 分组在一起 其中有 29 个组 每个变量的值为 0 或 1 我需要做的是对这些组 即 partner 1 Partner 2 等 求和 如果 rowSums 0 则使每个变量为 NA 例如 我的
  • 风险管理:如果已经做多,则不要下新订单

    如果该标志已经指示长 则不应有新的指示长的标志 如果标志不指示长计算表达式 longCondition if strategy long false rsi lt 30 and close gt moving avg shortCondit
  • 如何在 Cocoa OpenGL 程序中显示原始 YUV 帧

    我被分配的任务是编写一个程序 该程序获取示例原始 YUV 文件并将其显示在 Cocoa OpenGL 程序中 我是一名实习生 我几乎不知道如何开始 我一直在阅读维基百科和有关 YUV 的文章 但我找不到任何关于如何打开原始 YUV 文件 提
  • Xcode iOS:检查用户是否已登录,如果未登录则显示不同的视图

    我正在编写一个应用程序 其中登录用户比未登录用户拥有一些额外的功能 基本上 我或多或少有 5 个选项卡 当我启动应用程序时 用户立即获得登录页面 他可以决定跳过它 如果他跳过它 他就只有 3 个选项卡 如果他登录成功的话 就会有5个 我已经
  • 存储/分配经过身份验证的用户的角色

    我正在升级站点以使用 MVC 并且正在寻找设置身份验证的最佳方法 此时 我可以通过 Active Directory 进行登录 验证用户名和密码 然后设置身份验证 cookie 如何在登录时存储用户的角色信息 以便我的控制器在用户浏览站点时