限制给定NodeJS路由的某些AngularJS路由

时间:2016-07-10 20:09:05

标签: javascript angularjs node.js express

我有两条路由添加到我的NodeJS后端服务器app.js文件中,如下所示:

final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
    mDatabase = FirebaseDatabase.getInstance().getReference();


    ChildEventListener childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());
            adapter.add(dataSnapshot.child(userId).getChildren().toString());
        }
        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            Log.d(TAG, "onChildChanged:" + dataSnapshot.getKey());
            adapter.add(dataSnapshot.child(userId).getChildren().toString());
        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            Log.d(TAG, "onChildRemoved:" + dataSnapshot.getKey());
            adapter.add(dataSnapshot.child(userId).getChildren().toString());
        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
            Log.d(TAG, "onChildMoved:" + dataSnapshot.getKey());
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "postComments:onCancelled", databaseError.toException());
            Toast.makeText(getActivity(), "Failed to load entries.",
                    Toast.LENGTH_SHORT).show();
        }
    };
    mDatabase.addChildEventListener(childEventListener);

这些路线中的任何一个都可以完全访问AngularJS中定义的所有路线:

// Add the routes
app.get('/provision', ...);
app.get('/', ...);

仅举例:我想控制NodeJS中的“/ provision”路由,以便只能访问AngularJS中的“/ list”路由,并且只能访问NodeJS中的“/”路由“/ overview” “AngularJS中的路线。

目前在我的代码中,我可以使用NodeJS中定义的“/ provision”或“/”路由从浏览器访问所有AngularJS路由。我想只访问某些angularJS路由“/ provision”,其余路径使用“/”。我该如何控制?

1 个答案:

答案 0 :(得分:1)

如果您正在使用角度路由,除了api调用之外,您可能不需要使用除Node之外的任何路由。您可以使用stateChangeStart生命周期方法来确定是否应允许用户使用角度路由。有关如何执行此操作的一些说明,请参见UI- Router -- run function on every route change -- where does the state name live?

所以重申一下,你不会同时使用node和angular来处理路由。您将拥有一条允许ui路由器处理所有路由的路由。您可以使用stateChangeStart来确定是否允许用户前往他们尝试去的地方,如果不允许,您可以重定向他们。