我有两条路由添加到我的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”,其余路径使用“/”。我该如何控制?
答案 0 :(得分:1)
如果您正在使用角度路由,除了api调用之外,您可能不需要使用除Node之外的任何路由。您可以使用stateChangeStart生命周期方法来确定是否应允许用户使用角度路由。有关如何执行此操作的一些说明,请参见UI- Router -- run function on every route change -- where does the state name live?
所以重申一下,你不会同时使用node和angular来处理路由。您将拥有一条允许ui路由器处理所有路由的路由。您可以使用stateChangeStart来确定是否允许用户前往他们尝试去的地方,如果不允许,您可以重定向他们。