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

カスタムログインコントロールを使用しているため、および Role.IsInRole を使用するために、ユーザーの認証 Cookie を設定する必要があります。

カスタムログインボタンコードでこれを試してください。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 に答える