【问题标题】:.NET MVC Forms authentication - debug IsInRole()?.NET MVC Forms 身份验证 - 调试 IsInRole()?
【发布时间】:2010-06-18 23:18:19
【问题描述】:

我在我的 MVC 网站上使用表单身份验证。我使用 Visual Studio 中的默认 ASP.NET 配置选项来管理用户和角色。到目前为止一切顺利。

我可以在视图中成功执行Page.User.IsInRole("Moderator")True 按预期返回。

但是,当在 Global.asaxApplication_PostAuthenticateRequest() 内调用 Context.User.IsInRole("Moderator") 时(或者在循环中的任何后续事件,就此而言......)False 被返回。

Page.UserContext.User 有什么区别?我怎样才能在 Global.asax 中获得相同的(预期的)结果?

【问题讨论】:

    标签: .net forms-authentication global-asax


    【解决方案1】:

    在此阶段,上下文可能仍在 aspnet 帐户或您运行应用程序池的帐户下运行。您可能想要进行测试,在其中创建一些(或全部)Global.asax 中可用的事件,并将 Context.User.Name 的结果打印到文本文件中。然后也许您会看到名称是否存在任何值。我所看到的是,如果站点以 aspnet 帐户运行时,名称将为空白。

    您可能还想检查与您的数据库建立的连接,并查看在 Context.User.IsInRole("Moderator") 返回 false 期间谁在尝试登录数据库。

    另外,(这是在黑暗中拍摄的),您可能想看看 Thread.CurrentPrincipal.IsInRole("Moderator") 为您提供了什么。我希望这些建议对调试有所帮助。

    【讨论】:

    • 好建议!我发现确实 IsInRole() 在 PostAuthenticateRequest 返回不同的结果,然后在 AuthorizeRequest (authorizerequest 似乎给出了正确的(预期的)结果)。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2023-04-10
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多