2009-08-20 88 views
1

我一直在使用.net登录很长一段时间,但我最近的项目要求一些不是很好的编码。.net会员拒绝登录

我有一个数据库,其中包含.net成员资格的表等。 有4个角色:

  • 联系
  • BasicAdmin
  • PowerAdmin
  • 会员

现在的前3名都可以登录到管理系统,但我想拒绝登录对于那些在角色成员,我在下面已经添加到webconfig:

<authorization> 
    <deny roles="Member"/> 
    <deny users="?"/> 
</authorization> 

这在一定程度上起作用。它将“成员”角色中的用户重定向到登录页面,但它不会使消息登录失败,就像您未注册并输入错误数据时所获得的那样。

成员可以登录到这将是arguement起见关闭的限制到管理员的网站的会员区。

有没有人知道我要去哪里错,我错过了什么,或者这是不可能的?

感谢,

回答

1

你的会员可以登录并得到成员的内容,但随后重定向当他们试图获得在管理部分的东西。它通过设计工作。该成员不会得到失败的登录消息,因为他们没有登录失败,而是被拒绝访问。

纵观您可以检查作为一个人的应用程序试图进入页面,他们无法访问和断火,他们无权访问的消息,但是这是额外的工作,但可行的。

您也可以修改链接到该网站的某些部分这样你的应用程序只有当用户在合适的角色表演。例如,Roles.IsUserInRole(“role”)将检查当前登录的身份/用户是否在角色中。 2.0版本中还有LoginView控件,您可以将控件包裹起来,为您做到这一点。

编辑:根据您的第一条评论澄清。

这是如何设计角色提供者的。当您尝试访问您在web.config中被拒绝的页面时,它会将您重定向到登录页面。

你可以做两件事情:

删除在web.config中组deny语句,然后做的两件事情之一或全部:LoginView控件

使用和封装功能为管理员视图中的“管理员”角色,然后向他们无权访问的“成员”角色显示一条消息。

和/或一个页面检查角色和呈现消息和/或重定向用户到另一个页面的页面加载事件编写代码。

或者将拒绝声明留在网络中。配置的团体和

在登录页面的页面加载事件做类似

 If Me.User.Identity IsNot Nothing and Me.User.Identity.Isauthenticated Then 
      If Me.User.IsInRole("admin") Then 
      Response.Redirect("~NoAccessToMemberStuff.htm") 
      Else If Me.User.IsInRole("member") Then 
      Response.Redirect("~/NoAccessToAdminStuff.htm") 
      End If 
    End If 
+0

好吧,我错过了一下进一步的信息可能帮助。 应用程序的管理员端实际上是一个单独的网站。 即 www.mysite.com - 网站 admin.mysite.com - 管理站点 因此,而不是说你没有访问,这将显示庇隆尝试登录,他们的细节做访问该网站的一些点,我只想显示登录显示的“登录详细信息错误”验证消息,但默认显示的登录名不正确。 我也使用3.5 我不喜欢重定向到“你的登录失败页面”,因为它没有它只是你可以看到的唯一页面。 谢谢, – JamesStuddart 2009-08-20 14:50:18

+0

感谢您的额外位。我想我可能会这样做。哦,非常感谢您的帮助,周一我回来时,我会给它一个旋转。现在欢呼。 – JamesStuddart 2009-08-22 10:40:59