ASP.NET登录控制 - 如果在角色中,则拒绝登录

时间:2010-08-19 06:21:38

标签: c# asp.net

使用标准的ASP.NET登录控件,如果用户尝试登录已取消组的成员,我试图让它拒绝登录。

<asp:Login ID="Login1" runat="server" OnLoggedIn="Login1_LoggedIn" DestinationPageUrl="~/Default.aspx" FailureText="Whoops - something went wrong with your login.  <br />Please try again.  <br />If you've forgotton you password please click link below and we'll send you a new one" >
    <LayoutTemplate>
        <table cellpadding="1" cellspacing="0" style="border-collapse:collapse;">
            <tr>

和后面的代码(伪代码..不起作用)

protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        var profile = WebProfile.GetProfile(UserManager.GetCurrentUserName());

        if User.IsInRole("cancelled") {
            FormsAuthentication.SignOut();
            // write out a message saying you are not allowed to login
        }
    }

1 个答案:

答案 0 :(得分:0)

实际上,您不必在代码中执行此操作。您可以放入web.config的授权部分来阻止访问,而不是禁止登录。让用户登录但没有权利是完全合法的。

<deny roles="canceled">

如果你考虑一下,这是有道理的。我们有一个网站通过设置

将web.config设置为限制来锁定管理文件夹

  

因此,以其他用户级别登录的用户将被锁定。使用我的建议,您将特别锁定配置文件中“已取消”角色的用户,这通常更适合需要编译的代码。