angularjs – 如何使用Principal或Account服务获取当前登录用户

前端之家收集整理的这篇文章主要介绍了angularjs – 如何使用Principal或Account服务获取当前登录用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试加载特定于登录用户的$scope.projects. REST api方面是

@RequestMapping(value = "/users/{id}/projects",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<List<Project>> getAllProjects(@PathVariable("id") String id,HttpServletResponse response)
        throws URISyntaxException {
    log.debug("REST request to get User : {}",id);
    User user = userRepository.findOneByLogin(id);
    if (user == null) {
        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
    }
    List<Project> page = projectRepository.findByUserIsCurrentUser();
    return new ResponseEntity<List<Project>>(page,HttpStatus.OK);
}

用颤抖的客户端检查这一点.

angular.module('tfmappApp')
.factory('UserProject',function ($resource) {
    return $resource('api/users/:id/projects',{},{
            'query': {method: 'GET',isArray: true,params: { id: '@login'}},'get': {
                method: 'GET',transformResponse: function (data) {
                    data = angular.fromJson(data);
                    return data;
                }
            }
        });
    });

angular.module('tfmappApp')
.controller('ProjectController',function ($scope,Principal,Project,User,UserProject,ParseLinks) {
    $scope.projects = [];
    $scope.page = 1;

    Principal.identity().then(function(account) {
        $scope.account = account;
        $scope.isAuthenticated = Principal.isAuthenticated;
    });
    $scope.loadAll = function() {
        $scope.projects = UserProject.query({id: $scope.account.login});

    };
    $scope.loadPage = function(page) {
        $scope.page = page;
        $scope.loadAll();
    };
    $scope.loadAll();});

主要服务是Jhipster生成.以下代码无效,或者我遗漏了一些东西.

Principal.identity().then(function(account) {
        $scope.account = account;
        $scope.isAuthenticated = Principal.isAuthenticated;
    });

如何获取当前登录用户

获取当前登录的帐户或委托人或用户的正确方法是什么?

我正在使用Jhipster生成的HTTP会话身份验证.

解决方法

我得到了一些解决这个问题的方法.不是我想要的.

@Query("select project from Project project where project.user.login = ?#{principal.username}")
List<Project> findByUserIsCurrentUser();

是jhipster生成代码,用于加载当前用户的项目列表.项目与用户之间存在多对一的关系.

所以我们不需要像/ users / {id} /项目这样的REST url我们可以直接在工厂中使用/ projects以及java rest controller.

这最终将有助于获取当前登录用户的项目列表.

愿这有助于某人.

猜你在找的Angularjs相关文章