2013-11-22 5 views
6

「ASP.NET MVC 4」アプリケーションで作業していて、「SimpleMembershipProvider」を使用しています。アプリケーションはイントラネットで使用され、許可されていないユーザーには利用できないコンテンツはありませんので、実際のサイトコンテンツにユーザーを誘導する前にログインを強制します。ASP.NET MVC 4を使用してコンテンツを見るためにユーザーを強制的にログインさせる方法

これはやや些細な作業であるべきだと思いますが、私はそのようなロジックを実装する必要があります。私は助けを求めてMVC 4/SimpleMemebrshipスタイルを実行する必要があります。

私はそれが実装されるべきだと思う方法は、web.configファイルでこれを追加する最初のです:私は、私はそれがこれを置く方が良いと思う匿名許可するアクションを持っていない、すべての後に

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="15" slidingExpiration="true" enableCrossAppRedirects="false" protection="All" /> 
    </authentication> 

ここに。

そして、私にデフォルトルートを変更する:私はそれを見るよう

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional } 
      ); 

は、匿名でできるようになる唯一のアクションになります。しかし、私は少しデフォルトルートをLoginに変更することについて心配しています。これが予期しない欠点につながるかどうかはわかりません。

私はまたMVC 4 Internet Templateによって作成されたデフォルトの構造を維持するためのアイデアを持っているだけの責任を取ってHomeコントローラのIndex行動を残すが、ロジックが明確であるので、私はこのシナリオを好きではない - ユーザーがログインしている必要がありますどんな種類のアクセスを得るためにも、Home/Indexは私の心の中でいくつかのアクセスです。

このような種類の動作を実装する方法は何ですか。この権利を実装するために必要な基本的なステップは何ですか?

答えて

19

Authorize属性をグローバルフィルタとして登録すると、これを実現できます。ベローは、あなたのRegisterGlobalFilters方法は次のようになります方法の例です:場所でこれに

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
    filters.Add(new AuthorizeAttribute()); 
} 

、匿名ユーザーがログインページへのアクセスを許可する必要があります。これを行うには、ログインアクションメソッドにAllowAnonymous属性で注釈を付けます。

[AllowAnonymous] 
[HttpGet] 
public ActionResult Login() 
{ 
... 
} 

POST要求を受け取るログインアクションメソッドに対しても同じ操作を行います。

関連する問題