2013-05-03 167 views
0

我有一个管理页面在秘密文件夹,它应该只能由管理员访问。我试图创建一个会话,并检查登录的人是否是管理员。这未能识别管理员。以下是我的尝试。任何人都可以看到我错了哪里? 是否因为管理页面位于不同的文件夹中,当我创建会话时,在访问管理区域时它不会识别它?如果是这样,我该如何克服这一点?Asp.net允许访问管理员只有

if (Session["username"] != "admin") 
    { 
     Response.Redirect("~/NotAdmin.aspx"); 
    } 
    else 
    { 
     showtables(); 
    } 
+0

什么是失败的布尔或重定向?还是这个想法并不完全正确? – Nomad101 2013-05-03 09:25:21

+0

@ Nomad101这个想法是行不通的。当以“admin”身份登录时,它会在我允许访问时重定向我。无法识别admin – anonymous 2013-05-03 09:28:03

+0

您使用的是标准网络表单吗? – Nomad101 2013-05-03 09:28:29

回答

1

通过HttpContext的获取用户名类

var user = HttpContext.Current.User.Identity.Name; 
    if (user!= "admin") 
    { 
     Response.Redirect("~/NotAdmin.aspx"); 
    } 
    else 
    { 
     showtables(); 
    } 

在我看来则不是好与它合作。如果您的应用程序托管在负载平衡服务器上,该怎么办如果服务器负载均衡,则当负载均衡器将请求发送到其他服务器时,用户将丢失会话状态信息。

+0

谢谢尼古拉。这工作:)但是它怎么会不工作会议? – anonymous 2013-05-03 09:32:35

+0

虽然这似乎解决了问题,但您对负载平衡的担忧是完全没有根据的。如果您的网站托管在负载均衡的服务器上,那么只需将状态管理从InProc切换到SQL Server或状态服务器即可。当然不需要使用会话变量! – Fishcake 2013-05-03 10:14:34

+0

@Fishcake谢谢你的建议。我会牢记这一点。非常感激 :) – anonymous 2013-05-03 10:58:03

相关问题