Request.ServerVariables[“LOGON_USER”] 或 Current.User.Identity.Name 为空

发布于 2024-12-11 18:17:15 字数 312 浏览 0 评论 0原文

我正在使用表单身份验证,应用程序池设置为经典,我已启用表单身份验证和匿名访问,并且已禁用 Windows 身份验证。我仍然无法读取 LOGON_USER 或 IPrincipal.Identity.Name。

在 IE9 中,我将用户身份验证设置为使用当前用户名和密码自动登录。

但我仍然无法检索当前登录的用户。

可能缺少什么?这是 IIS7.5 中的重大更改还是 IE9 中的更改?

请注意,我不能只启用 Windows 身份验证,因为该网站既可以在外部使用,也可以在内部使用。另外,客户端希望被定向到登录页面,而不是受到用户/密码提示的挑战。

I'm using forms authentication, with the application pool set to classic I've enabled forms authentication and anonymous access, and I've disabled windows authentication. I'm still unable to read the LOGON_USER or IPrincipal.Identity.Name.

In IE9 I've set the user authentication to pass through automatic logon with the current user name and password.

Yet I still can't retrieve the current logged in user.

What could be missing? is this a breaking change in IIS7.5 or a change in IE9?

Note I can't just enable windows auth as this site is used externally as well as internally. Plus the client wants to be directed to the login page and not challenged with the user/password prompt.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野心澎湃 2024-12-18 18:17:15

当切换到经典版时,它返回 403 状态,无法处理请求。

最后,我更改了路由表以使用扩展名,如下所示:

        routes.MapRoute(
            "Default", // Route name
            "{controller}.mvc/{action}/", // URL with parameters
            new { controller = "Login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute("Root", string.Empty, new { controller = "Login", action = "Index"});

然后我添加了一个新的通配符映射来处理 *.mvc 扩展名。

另请确保您在我的解决方案中使用正确的应用程序池身份,我正在使用 NetworkService 帐户,并且我还授予 NetworkService 帐户对 Web 文件夹的完全权限。

When switching to classic it was returning a 403 status it was failing to handle the request.

In the end I altered the routes table to use extensions like so:

        routes.MapRoute(
            "Default", // Route name
            "{controller}.mvc/{action}/", // URL with parameters
            new { controller = "Login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute("Root", string.Empty, new { controller = "Login", action = "Index"});

Then I added a new wildcard mapping to handle the *.mvc extension.

Also make sure you are you using the correct app pool Identity in my solution I'm using NetworkService account, and I've also granted NetworkService account full permissions on the web folder.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文