1

我有一个需要用户名/密码的登录屏幕。

我正在使用作为 ASP.NET 一部分的 ASP.NET 的成员资格和角色表来存储用户最初注册时的信息。

一旦用户使用适当的角色登录,然后将他们引导到另一个页面。

这是另一个页面的 web.config 文件。请注意,它只允许 SomeRole 的角色。

    <configuration>
    <system.web>
    <authorization>
        <allow roles="SomeRole" />   
        <deny users="*" />                   
    </authorization>
   </system.web>
   </configuration>

在登录屏幕中,我捕获了用户名、密码。我不确定如何使以下成为用户的角色。

我有以下代码:

      protected void btnLogin_Click(object sender, EventArgs e)
      {    
          // not sure what code to put here so user logged in that has a Role of SomeRole works with code just below                   
          if (User.IsInRole("SomeRole"))

当我查看时,用户的角色显示为空白。我的问题是,如何使当前登录的当前具有 SomeRole 的角色,以便

    <allow roles="SomeRole" />    

将工作。请注意,在登录屏幕上,我有一个属于 SomeRole 的用户名和密码,但不知道如何制作

if (User.IsInRole("SomeRole")) 工作,以便继承该用户的角色。希望这是有道理的。

这是我的 web.config 的样子:

         <roleManager enabled="true" cacheRolesInCookie="true"
               defaultProvider="SiRoleProvider"
               createPersistentCookie="false"
               cookieProtection="All">
           <providers>
            <clear/>
             <add connectionStringName="SiiSQL1" applicationName="SiGen" name=" r" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
             </providers>
           </roleManager>      

谢谢

4

1 回答 1

2

您需要为用户设置身份验证 cookie,因为您正在使用自定义登录控件并且为了使用 Role.IsInRole

在您的自定义登录按钮代码中尝试此操作。SetAuthCookie 实际上将设置登录用户由会员提供者访问

protected void Login_Click(object sender, EventArgs e)
{

if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
{

FormsAuthentication.SetAuthCookie(txtUserName.Text, true);

string url = "~/Member/Default.aspx";
Response.Redirect(url); 
于 2013-04-21T20:57:52.460 回答