フォーム認証を使用してMVCアプリケーションをセットアップしただけで、私の_LogOnPartial
ビューを除いてすべてが素晴らしいです。 「ようこそ[ログオフ]」は正常に機能しますが、ユーザーの役割に応じて表示する必要があるロール固有のテキストまたはドロップダウンセレクタもあります。MVC3フォーム認証:ロールで表示される部分的な表示項目
ロールを保持するためにクッキーを使用し、コントローラでUser.IsInRole()
と確認すると、何らかのアクションが発生する前に、ユーザーが現在のセッション中にログインしていれば問題ありません。
セッションが開始されたときにロールを含むCookieがないため、表示されるアイテムが存在しないため、ユーザーが[Remember me]を選択した場合、これは機能しません。
User.IsInRole()
を部分的に確認する簡単な方法はありますか?ここで
は私のビューです:
<div id="LogInContainer">
@if (Request.IsAuthenticated)
{
<div class="InLine" id="WelcomeDisplay">
<text>Welcome <b>@Context.User.Identity.Name</b>! [ @Html.ActionLink("Log Off", "LogOff", "Account")
]
</text>
</div>
<div id="clientDropDown">
@{
var requestCookie = Request.Cookies["Role"];
if (requestCookie != null)
{
if (requestCookie.Value == "Client1")
{
HttpCookie joannCookie = new HttpCookie("Client", "Client1");
Response.Cookies.Add(Client1Cookie);
<text>Client: Client1</text>
}
else if (requestCookie.Value == "Client2")
{
HttpCookie safewayCookie = new HttpCookie("Client", "Client2");
Response.Cookies.Add(Client2Cookie);
<text>Client: Client2</text>
}
else if (requestCookie.Value == "Administrator")
{
@:Client: @Html.DropDownList("Client", new SelectList(ConfigurationHelper.Clients))
}
}
else
{
//Do nothing
}
}
</div>
}
else
{
<div id="LogOnLink">
[ @Html.ActionLink("Log On", "LogOn", "Account") ]
</div>
}
</div>
はnonauthクッキーを永続化する方法はありますか?私はクッキーが新しく、無知に過ぎないかもしれませんが、私は運がないGoogle検索を試みました。
永続的なCookieの一般的な期間はどのくらいですか?たとえば、ASP.NETフォームは認証Cookieに何を使用しますか? –
通常、認証クッキーは非常に危険であると考えられているため、認証クッキーは保持しません。どのように認証(ログイン)情報を保持しましたか? –
私は、System.Web.Security.FormsAuthenticationを使用してデフォルトのasp.net MVC3 Webサイト認証を使用しました: 'FormsAuthentication.SetAuthCookie(userName、createPersistentCookie); ' –