在ASP.NET中,基于角色的认证没有登录错误文本

 2023-02-17    389  

问题描述

我有一个基于ASP.NET角色/成员身份身份验证站点.有一个子文件夹及其页面,只能通过某个角色访问.问题是,如果在登录页面中的非允许角色组登录中的任何用户,登录页面不会显示任何错误消息.我的意思是,当用户从允许登录时,登录页面将用户正确重定向到受保护的页面,但是当从非allowedrole尝试登录时,他/她正确登录但没有显示错误消息,用户返回到登录页面,没有任何信息.我确实在登录表单中设置了一个故障文件,但未显示. loginForm.LoginError事件也没有提出.我尝试了这个代码,但它不显示:

protected void frmLogin_LoggedIn(object sender, EventArgs e)
        {
            if (!User.IsInRole("AllowedRole"))
                frmLogin.FailureText = "Access denied.";
                //Label1.Text = "Access denied."; //doesn't work either
        }

我做错了什么?

在ASP.NET中,基于角色的认证没有登录错误文本

推荐答案

我不知道在哪里找到支持这个的文档.这个答案是基于观察我看过我写的IO应用程序的行为.

登录页面从允许的访问规则中泄露.它需要.假设您有一个网站,即使在根级别,整个网站也不允许匿名用户.用户需要能够访问登录页面以便能够登录.

要解决您的困境,您需要添加标签(我会称之为lblerror)和在您的页面上,添加以下(C#示例代码):

if(User.IsLoggedIn)
{
   If(!User.IsInRole("AllowedRole")
   {
      lblError.Text = "Access denied.";
   }


}

添加

rving更多的想法,登录页面没有错误的原因是当用户尝试访问受保护的页面时发生错误,而不是登录页面.

然而,我相信我的建议也适用于你的情况.

其他推荐答案

在您可以做的事情上检查returnull查询字符串参数,如果它是”拒绝”文件夹,将用户重定向到错误页面或允许的登录页面.这样:

protected void frmLogin_LoggedIn(object sender, EventArgs e)
{
    if (!User.IsInRole("AllowedRole") && 
        InRestrictedArea(Request.QueryString["ReturnUrl"]))
    {
        Response.Redirect("Not-Allowed-Here.aspx");
    }
}

定义InRestrictedArea检查所请求的区域是否是它们不允许的位置.

以上所述是小编给大家介绍的在ASP.NET中,基于角色的认证没有登录错误文本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34122.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。