我有2个菜单,一个是为普通用户设置的,另一个是为Admin用户设置的。我想检查谁已登录(基于他们的AD登录到他们的计算机),然后显示到适当的菜单。
我正在一个网站上。我的主页现在很普通,但是我正在尝试进行身份验证,以便可以向内部用户开放该网站,并将管理员部分留给管理员。到目前为止,我所获得的并不多。这是web.config:
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
这是default.aspx:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Frontier Reports</title>
<link rel="StyleSheet" href="stylesheet.css" type="text/css">
<script>
var resize = setInterval(function () { chng_iframe_height('MainPageFrame', 'header', 'footer') }, 500);
function chng_iframe_height(ifrid, hid, fid)
{
var eheight = window.innerHeight;
var ifrobj = document.getElementById(ifrid);
var header = document.getElementById(hid);
var footer = document.getElementById(fid);
var header_height = getComputedStyle(header).height;
var footer_height = getComputedStyle(footer).height;
var reserved_height = parseInt(header_height) + parseInt(footer_height);
var reserved_height = reserved_height + 65;
ifrobj.style.height = eheight - reserved_height + "px";
}
</script>
</head>
<body onload="chng_iframe_height('MainPageFrame','header','footer');">
<!-- #include file="MenuCheck.aspx"-->
<div id="header">
<div class="wrap">
<div class="logo">
<h1></h1>
</div>
</div>
</div>
<iframe src="MainPage.aspx" name="MainPage" id="MainPageFrame" FrameBorder=0>
This will show up if Chrome doesn't understand IFrame.
</iframe>
<div id="footer">
<asp:LoginName ID="LoginName1" FormatString="{0}" runat="server" />
<div class="wrap">
<h2></h2>
</div>
</div>
</body>
</html>
如您所见,我没有太多。我尝试使用ascript
来获取用户名,但没有用。我还查看了其他几个答案,试图找到对我有用的东西。我遇到的最大问题是我无法访问服务器本身。我所拥有的就是上面显示的内容,它可以正常工作。我可以在屏幕上显示我的用户名,但是我不知道如何在某个if
else
地方使用该用户名,以便更改菜单。
我已经检查了以下内容:
未启用Windows身份验证的情况下填充HttpContext.Current.User
食谱:在Intranet ASP.NET Web应用程序中启用Windows身份验证
编辑
我得到这个工作:
<% if(1 == 1) {%>
<!-- #include file="AdminMenu.php"-->
<% } else {%>
<!-- #include file="Menu.php"-->
<% } %>
如果我尝试将其更改为if(User.Identity.GetUserID() == "CORP\\mmm976")
或,if(User.Identity.Name == "CORP\\mmm976")
则会出现服务器错误。
我添加了此内容<%using Microsoft.AspNet.Identity%>
以尝试GetUserID()
使其正常工作。仍然服务器错误。
最终编辑
现在可以使用了!
我更改了Default.aspx页中的包含以拉入另一个.aspx页。这样,我就可以只有用于检查用户并根据用户登录名显示正确菜单的代码。这是MenuCheck.aspx:
<%@ Page Language="C#" %>
<% if (User.Identity.Name == @"corp\mmm976") {%>
<!-- #include file="AdminMenu.php"-->
<% } else {%>
<!-- #include file="Menu.php"-->
<% } %>
通常,身份验证是开箱即用的,现在您需要了解有关授权的更多信息。始终建议使用基于角色的方法,因为它更安全,更方便。这意味着您的管理员应属于某个管理员组,该管理员组可用于让他们访问管理员区域。对于快速而肮脏的方法,您可以考虑类似
<% if (User.Identity.GetUserID() == "domain\\user") { %>
<!-- #include file="AdminMenu.php"-->
<% } %>
其中domain \ user(\\编码)是您的管理员ID。
请注意,所有这些都必须以aspx(而不是html)进行编码,并且不需要表单身份验证(这与Windows身份验证不同)。
同样,所有这些都可以通过另一种方式完成,例如,您可以创建一个专用的/ admin子目录,该子目录可能具有受限的访问权限(也可以仅在服务器上配置它,而无需使用asp.net)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句