SignalR - 用户未经授权时未调用的客户端方法

时间:2017-04-11 20:03:01

标签: asp.net-mvc client authorization signalr

我只有评论部分,当我向数据库发布一些评论时,signalr正在所有客户端上调用一个方法。

 @Override
public void run() {
    handler.postDelayed(this, updateTime);
    startLocationUpdates();
    if (myLocation != null) {
        mFirebaseDatabaseHelper.updateUserLocation(myLocation);
    }
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            stopLocationUpdates();

        }
    }, GET_LOCATION_TIME);
}

private void startLocationUpdates() {
    //handle unexpected permission absence
    if (mGoogleApiClient.isConnected()) {
        if (checkLocationPermission()) {
            LocationServices.FusedLocationApi.requestLocationUpdates(
                    mGoogleApiClient, createLocationRequest(), this);
        }
    } else {
        mGoogleApiClient.connect();
    }
}

private LocationRequest createLocationRequest() {
    LocationRequest mLocationRequest = new LocationRequest();

    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    mLocationRequest.setInterval(1000); //1 secs
    mLocationRequest.setFastestInterval(100); //1 secs
    mLocationRequest.setSmallestDisplacement(1f); //1 m

    return mLocationRequest;

}

private void stopLocationUpdates() {
    if (mGoogleApiClient.isConnected()) {
        LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
    }
}

问题在于,当一个用户只是页面的访问者并且没有登录到系统时,不会调用客户端方法updateBlogComments。

如果有2个登录用户访问同一页面,则会同时调用该方法,并且没有问题。但是当已登录用户发布评论时,未经授权的用户将无法获取新上传的评论应该如此。

我该如何解决这个问题。我希望授权用户和非授权用户看到实时评论上传。

由于

1 个答案:

答案 0 :(得分:1)

解决。

我故意为此操作创建了一个单独的集线器,不需要授权,但是我忘了更改hubcontext的名称,所以我没有更改,而是使用了NotificationsHub。

感谢@Stilgar,提醒我问题所在。