0

フォーム認証を使用して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検索を試みました。

答えて

1

クッキーの有効期限を将来の日付に設定して永続化させます。有効期限を設定しない場合は、セッションクッキーまたは非永続クッキーと呼ばれ、ブラウザによってディスクに保存されず、同じブラウザセッションを使用している間のみ保持されます。クッキーを「永遠に」保つには、まだ日付を選択する必要があります。唯一できることは、将来(たとえば、現在の日付+大きな一定の時間スパン) 。

ただし、永続的なCookieに認証情報や認証情報を保存する際には、十分注意してください。このようなCookieを保持することはセキュリティ上の重大なリスクであるため、デフォルトではASP.NETは認証にセッションCookieを使用します。

+0

永続的なCookieの一般的な期間はどのくらいですか?たとえば、ASP.NETフォームは認証Cookieに何を使用しますか? –

+0

通常、認証クッキーは非常に危険であると考えられているため、認証クッキーは保持しません。どのように認証(ログイン)情報を保持しましたか? –

+0

私は、System.Web.Security.FormsAuthenticationを使用してデフォルトのasp.net MVC3 Webサイト認証を使用しました: 'FormsAuthentication.SetAuthCookie(userName、createPersistentCookie); ' –

関連する問題