微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

角色身份验证在asp.net中不起作用

如何解决角色身份验证在asp.net中不起作用

| 我正在使用下面的代码基于用户身份验证访问页面
if (user.FirstOrDefault() == HashedPassword)
{
    string roles = \"Member\";

    // Create the authentication ticket
    FormsAuthenticationTicket authTicket = new
        FormsAuthenticationTicket(1,//  version
                                  loginName.Text,// user name
                                  DateTime.Now,//  creation 
                                  DateTime.Now.AddMinutes(60),// Expiration
                                  false,//  Persistent
                                  roles);                     // User data

    // Now encrypt the ticket.
    string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
    // Create a cookie and add the encrypted ticket to the
    // cookie as data.
    HttpCookie authCookie = 
                new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
    // Add the cookie to the outgoing cookies collection.
    Response.Cookies.Add(authCookie);

    Response.Redirect(\"/Members/ClientAccount.aspx\");    
}
else
{
    Response.Redirect(\"signin.aspx\");
}
} 如果登录详细信息正确,则用户将被定向到ClientAccount.aspx,但我希望只有在其角色设置为Admin的情况下才会发生,如下面的web.config文件所示。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<configuration>
    <location path=\"members.aspx\">
        <system.web>
            <authorization>
                <allow roles=\"Member\" />
                <allow roles=\"Admin\" />
                <deny users=\"?\" />
            </authorization>
        </system.web>
    </location>
    <location path=\"ClientAccount.aspx\">
        <system.web>
            <authorization>                    
                <allow roles=\"Admin\" />
                <deny roles=\"Member\"/>
                <deny users=\"?\" />
            </authorization>
        </system.web>
    </location>
</configuration>
我如何做到这一点? 我猜web.config文件没有查看cookie做授权,所以我在那做错了。     

解决方法

仔细检查您相对于web.config的位置路径,我的猜测是问题所在。
<location path=\"/Members/ClientAccount.aspx\">
    ...
</location>
当然,您需要做其他事情来代替这条线,您只是在做这个测试,我想是吗?
 Response.Redirect(\"/Members/ClientAccount.aspx\");    
也就是说,将他们重定向到您不允许其点击的页面。我确定一旦确定不允许成员访问该页面,您将加强这一部分。 您应该确保您的web.config具有以下标记:
<authentication mode=\"Forms\" />
您需要正确配置它,有很多选项:
<authentication mode=\"Forms\">
    <forms loginUrl=\"Login.aspx\"
           protection=\"All\"
           timeout=\"30\"
           name=\".ASPXAUTH\" 
           path=\"/\"
           requireSSL=\"false\"
           slidingExpiration=\"true\"
           defaultUrl=\"default.aspx\"
           cookieless=\"UseDeviceProfile\"
           enableCrossAppRedirects=\"false\" />
</authentication>
http://msdn.microsoft.com/en-us/library/ff647070.aspx     ,嘿,你是说要 目前,拒绝策略确实不需要列出的成员角色。如果您希望也允许该成员进入该页面,则需要换掉拒绝,以允许:
<authorization>
  <allow roles=\"Admin\" />
  <allow roles=\"Member\"/>
  <deny users=\"?\" />
</authorization>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。