角色 - 与问题User.IsInRole [英] Roles - Issue with User.IsInRole

查看:217
本文介绍了角色 - 与问题User.IsInRole的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有其中用户分配给角色一个注册页面,一旦用户点击提交按钮如下:

  OMU的MembershipUser;    如果(!(Roles.RoleExists(流)))
    {
        Roles.CreateRole(流);
    }    OMU = Membership.CreateUser(txtUserName.Text.Trim(),txtPassword.Text.Trim(),txtEmail.Text.Trim());    Membership.UpdateUser(OMU);    Roles.AddUserToRole(oMU.UserName,流);

当用户进入一个登录界面,我有以下几点:

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

 如果(User.IsInRole(流))
    {    }

但它从未进入User.IsInRole块。我需要做什么才能有谁注册的是角色,使得它与User.IsInRole的一部分用户执行。

请注意,我有一个文件夹,这样,所以我需要他们的角色流的一部分:

 <?XML版本=1.0&GT?;
   <结构>
   <&的System.Web GT;
    <授权>
        <拒绝用户=*/>
        <让角色=流/>
    < /授权>
    < /system.web>
  < /结构>


解决方案

移动<让角色=流/> 上方&LT ;拒绝用户=*/> 。否则,所有用户都将被拒绝。

 <结构>
   <&的System.Web GT;
    <授权>
        <让角色=流/>
        <拒绝用户=*/>
    < /授权>
    < /system.web>
< /结构>

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

下面是示例 -

 <会员defaultProvider =DefaultMembershipProvider>
  <供应商>
    <清/>
    <添加名称=DefaultMembershipProviderTYPE =System.Web.Providers.DefaultMembershipProvider,System.Web.Providers,版本= 1.0.0.0,文化=中性公钥= 31bf3856ad364e35的connectionStringName =XXXXXSqlConnectionenablePasswordRetrieval =false的enablePasswordReset设置=真requiresQuestionAndAnswer =假requiresUniqueEmail =假maxInvalidPasswordAttempts =5minRequiredPasswordLength =6minRequiredNonalphanumericCharacters =0passwordAttemptWindow =10的applicationName =XXXXX/>
  < /供应商>
< /会员>
< roleManager启用=真cacheRolesInCookie =假defaultProvider =DefaultRoleProvider>
  <供应商>
    <清/>
    <添加名称=DefaultRoleProviderTYPE =System.Web.Providers.DefaultRoleProvider,System.Web.Providers,版本= 1.0.0.0,文化=中性公钥= 31bf3856ad364e35的connectionStringName =XXXXXSqlConnection的applicationName =XXXXX/ >
  < /供应商>
< / roleManager>

I have a register page where the user is assigned to a role as follows once the user clicks on the submit button:

    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");

When the user goes to a login screen, I have the following:

When the user logs in, I need to make sure that they indeed are part of that role:

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

    }

but it never goes into the User.IsInRole block. What do I need to do in order to have the user who registered be part of the Role such that it works with User.IsInRole.

Note that I have a folder as such so I need them to be part of the Streaming Role:

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

解决方案

Move <allow roles="Stream" /> above <deny users="*" />. Otherwise, all users will be denied.

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

Make sure to you have membership and RoleManager in web.config

Here is the sample -

<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>

这篇关于角色 - 与问题User.IsInRole的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆