2

我有一个注册页面,一旦用户单击提交按钮,用户就会被分配到如下角色:

    MembershipUser oMU;

    if (!(Roles.RoleExists("Stream")))
    {
        Roles.CreateRole("Stream");
    }

    oMU = Membership.CreateUser(txtUserName.Text.Trim(), txtPassword.Text.Trim(), txtEmail.Text.Trim());

    Membership.UpdateUser(oMU);

    Roles.AddUserToRole(oMU.UserName, "Stream");

当用户进入登录屏幕时,我有以下内容:

当用户登录时,我需要确保他们确实是该角色的一部分:

    if (User.IsInRole("Stream"))
    {

    }

但它永远不会进入 User.IsInRole 块。我需要做什么才能让注册的用户成为角色的一部分,以便它与 User.IsInRole 一起使用。

请注意,我有一个文件夹,因此我需要它们成为 Streaming Role 的一部分:

    <?xml version="1.0"?>
   <configuration>
   <system.web>
    <authorization>
        <deny users="*" />
        <allow roles="Stream" />           
    </authorization>
    </system.web>
  </configuration>
4

2 回答 2

1

<allow roles="Stream" />上移<deny users="*" />。否则,所有用户都将被拒绝。

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

确保您在 web.config 中有成员资格和 RoleManager

这是样本 -

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear/>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="XXXXXSqlConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="XXXXX"/>
  </providers>
</membership>
<roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear/>
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="XXXXXSqlConnection" applicationName="XXXXX"/>
  </providers>
</roleManager>
于 2013-04-19T20:00:28.610 回答
0

尝试使用HttpContext获取当前登录用户:

if (HttpContext.Current.User.IsInRole("Stream"))
{

}
于 2013-04-19T20:06:22.220 回答