我有一个注册页面,一旦用户点击提交按钮,用户就会被分配到一个角色:
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>
答案 0 :(得分: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>
答案 1 :(得分:0)
尝试使用 HttpContext 获取当前登录用户:
if (HttpContext.Current.User.IsInRole("Stream"))
{
}