OpenIDをMVC3 Razorアプリケーションに統合しようとしています。 OpenIDは動作していますが、役割のユーザーのメンバーシップを試してみると、テストは失敗します。IsUserInRoleがtrueの状態にならない
二つの役割:「ユーザー」という名前のユーザーとの
「MainUser」。 「Guest」という名前の1人のユーザーを持つ「GuestUser」。
ここでは私のフォームは、私はアプリを実行し、成功したのOpenIDでの認証と含むグリーンブロックを取得し、私のLogon.cshtml
<form action="[email protected](Request.QueryString["ReturnUrl"])" method="post" id="openid_form">
<input type="hidden" name="action" value="verify" />
<div>
<fieldset>
<legend>Login using OpenID</legend>
<div class="openid_choice">
<p>
Please click your account provider:</p>
<div id="openid_btns">
</div>
</div>
<div id="openid_input_area">
@Html.TextBox("openid_identifier")
<input type="submit" value="Log On" />
</div>
<noscript>
<p>
OpenID is service that allows you to log-on to many different websites using a single
indentity. Find out <a href="http://openid.net/what/">more about OpenID</a> and
<a href="http://openid.net/get/">how to get an OpenID enabled account</a>.</p>
</noscript>
<div>
@if (Model != null)
{
if (String.IsNullOrEmpty(Model.UserName))
{
<div class="editor-label">
@Html.LabelFor(model => model.OpenID)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.OpenID)
</div>
<p class="button">
@Html.ActionLink("New User ,Register", "Register", new { OpenID = Model.OpenID })
</p>
}
else
{
//user exist
<p class="buttonGreen">
@Model.UserName,
@if (Roles.IsUserInRole("MainUser"))
{ <a href="@Url.Action("Index", "Main")">Welcome @Model.UserName, Continue... </a> }
@if (Roles.IsUserInRole("GuestUser"))
{ <a href="@Url.Action("Index", "Guest")">Welcome @Model.UserName, Continue... </a> }
<a href="@Url.Action("Index", "Main")">Role test failed for @Model.UserName </a>
</p>
}
}
</div>
</fieldset>
</div>
</form>
にあります: ユーザー、ロールのテストはユーザー
に失敗しましたこれはAを示し成功したログオンを "ユーザー"とし、それをelseコードブロックに作成しましたが、IsUserInRoleテストが失敗しました。
最初のテスト[!if(!Roles.IsUserInRole( "MainUser"))]にnot演算子を追加すると、テストに合格します。
"User"がIsUserInRoleテストに失敗するのはなぜですか?私はすべての役割とユーザーのスペルが正しく、ユーザーが適切な役割を果たしていることを確認しました。
助けてください。
Myが正しく設定されていて、アプリケーションの他の部分でIsUserInRoleを正常に使用しています。承認データベースがメインデータベースにマージされました。あなたの最初の文章が問題になるかもしれません。私はFormsAuthenticationを使用しません.OpenIdフォームは決してアクションに戻りませんが、Javaスクリプトを通して処理されます。私はIsUserInRole関数を実行する必要はないので、私は1つのログインしか持たないので、この時点では問題になっています。私はこれを答えとしてマークし、今後もっと見なければならないとコメントします。ありがとうございました –
Joe
Myが正しく設定されており、アプリケーションの他の部分でIsUserInRoleを正常に使用しています。承認データベースがメインデータベースにマージされました。あなたの最初の文章は問題になるかもしれません。私はFormsAuthenticationを使用せず、OpenIdフォームは決してアクションにポストしませんが、Javaスクリプトを通して処理されます。私はIsUserInRole関数を実行する必要はないので、私は1つのログインしか持たないので、この時点では問題になっています。私はこれを答えとしてマークし、将来もっと見るべきであればコメントします。ありがとうございました –
Joe