0

バックボーンを使用して一連のルートを定義しました

例えば:

Backbone.Routes.prefix = Onethingaday.Routers
Backbone.Routes.map

"!*splat":
  "HomeRouter" : "reroute"

"":
  "NavbarRouter"  : "index"
  "SidebarRouter" : "index"
  "HomeRouter"    : "index"

"all":
  "NavbarRouter"  : "index"
  "SidebarRouter" : "index"
  "HomeRouter"    : "all"

"news":
  "NavbarRouter"        : "index"
  "SidebarRouter"       : "index"
  "NotificationsRouter" : "index"

"popular/threads":
  "NavbarRouter"   : "index"
  "SidebarRouter"  : "index"
  "DiscoverRouter" : "popularThreads"

ここで、特定のルートへのアクセスを制限したいと思います。つまり、ユーザーが「isLoginedIn」の場合、「すべて」および「ニュース」ルートにのみアクセスできるようにします。ここで確認するにはどうすればよいですか?たとえば、ユーザーが「すべて」ページと「ニュース」ページにアクセスしようとした場合、ユーザーを確認して比較し、別のログイン ページにリダイレクトできますか?

4

1 に答える 1

0

現在のユーザーの状態をどのように保存するかによって、それが であるSessionControllerCurrentUserモデルであるかに応じて、常に の行に沿ってメソッドを公開できますcurrentUser.isLoggedIn()

バックボーンはルートの単一深度ハッシュマップのみを公開するため、マッピングについて完全にはわかりません(ルートを定義するために何か他のものを使用していますか?)

私のバックボーン アプリの 1 つに、次のようなコードがあります。

home: function homeFn()
{
    if (this.app.currentUser.isAnonymous())
    {
        this.app.page('index');
    }
    else
    {
        this.app.page('dashboard');
    }
}

これにより、ルート マッピング内で直接制御できます。これが気に入らない場合は、いつでも Backbone.Router オブジェクトを拡張して、前後のフィルターを持つことができます。執筆時点では、このプラグインは私が以前に使用したものであり、あなたが達成しようとしていることをうまく実行するのに役立ちました.

于 2012-05-29T12:05:32.993 に答える