Angular JS和SpringBoot,通过身份验证后获取用户

辉创:

我想在登录我的应用后获得User来创建自己的帐户。例如,我希望他的ID将他重定向到页面:“ / user-cars /:userId”。我正在使用Angular JS和SpringBoot。我不知道该怎么做。下面是我的代码:

Config.js

angular.module('app')
.config(function ($routeProvider, $httpProvider) {
    $routeProvider
        .when('/users', {
            templateUrl: 'app/components/users/list/userList.html',
            controller: 'UserListController',
            controllerAs: 'ctrl'
        })
        .when('/user-add', {
            templateUrl: 'app/components/users/edit/userEdit.html',
            controller: 'UserEditController',
            controllerAs: 'ctrl'
        })

        .when('/user-cars/:userId', {
            templateUrl: 'app/components/users/userCars/carList.html',
            controller: 'CarListController',
            controllerAs: 'ctrl'
        })
        .when('/user-login',{
            templateUrl: 'app/components/users/login/login.html',
            controller: 'AuthenticationController',
            controllerAs: 'ctrl'
        })

        .otherwise({
            redirectTo: '/',
            controller: 'HomeController',
            controllerAs: 'ctrl'
        });
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
});

authService.js

angular.module('app')
.constant('LOGIN_ENDPOINT', '/user-login')
.constant('LOGOUT_ENDPOINT', '/user-logout')
.service('AuthenticationService', function($http, LOGIN_ENDPOINT, LOGOUT_ENDPOINT) {
    this.authenticate = function(credentials, successCallback) {
        var authHeader = {Authorization: 'Basic ' + btoa(credentials.email+':'+credentials.password)};
        var config = {headers: authHeader};
        $http
            .post(LOGIN_ENDPOINT, {
            }, config)
            .then(function success(res) {
                $http.defaults.headers.post.Authorization = authHeader.Authorization;
                successCallback();
            }, function error(reason) {
                console.log('Login error');
                console.log(reason);
            });
    }
    this.logout = function(successCallback) {
        delete $http.defaults.headers.post.Authorization;
            successCallback();
    }

});

authController.js

angular.module('app')
.controller('AuthenticationController', function($rootScope, $location, AuthenticationService) {
    var vm = this;
    vm.credentials = {};
    var loginSuccess = function() {
        $rootScope.authenticated = true;
        $location.path('/');
    }
    vm.login = function() {
        AuthenticationService.authenticate(vm.credentials, loginSuccess);
    }
    var logoutSuccess = function() {
        $rootScope.authenticated = false;
        $location.path('/');
    }
    vm.logout = function() {
        AuthenticationService.logout(logoutSuccess);
    }
})

我从后端获得了所有工作,但是现在我不知道如何使用它并获得用户

RestController.java `

@RestController
public class AuthenticationController { 
    @RequestMapping("/user-login")
    @ResponseBody
    public Principal login(Principal user)
    {
        return user;
    }`

授权有效,我得到了校长,但是我不知道该和他做什么。

RG:

根据您的UserDetails实现,您可以填充用户详细信息。默认实现只有用户名和密码,其他详细信息可以添加到自定义实现中。

Spring参考文档中的示例

Authentication auth = httpServletRequest.getUserPrincipal();
// assume integrated custom UserDetails called MyCustomUserDetails
// by default, typically instance of UserDetails
MyCustomUserDetails userDetails = (MyCustomUserDetails) auth.getPrincipal();
String firstName = userDetails.getFirstName();
String lastName = userDetails.getLastName();

浏览注释,默认实现为UserDetails

用于您目的的自定义实现的示例是

public class MyCustomUserDetails implements UserDetails{
 // Have the id field declared
 private String userId;
 // ...getters and setters

}

可以通过 SO问题和答案找到完整的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

初始中间件身份验证后,Angular JS获取用户

使用 Angular4 和 Angularfire2 (v4) 在 Firebase 中获取用户身份验证配置文件信息

Angular 7-在Azure AD身份验证后获取登录用户名

在Laravel 5.1和Angular JS(JWT身份验证)中记住用户并忘记密码功能

Angular从kerberos身份验证获取数据

Angular 2令牌和身份验证

Angular和Firebase身份验证

通过Firebase在Android应用中进行身份验证:获取用户的名字和姓氏

Angular-Auth Guard阻止授权用户通过直接URL访问身份验证页面

如果用户已通过身份验证,则使用 express 为 Angular 应用程序提供服务

如何通过 Angular 2+ / NodeJS API 对用户进行身份验证

在 Angular 中,是否可以根据用户是否通过身份验证加载不同的模块?

基于 Angular 令牌的身份验证,获取并存储用户配置文件,最佳实践

使用angular,node.js和身份提供者的SAML身份验证

Angular 2防止非身份验证用户访问路由和子级

在Angular2和Firebase中进行用户身份验证后进行重定向

无法读取Angular和Firebase身份验证中未定义的属性“用户”

Django Rest Framework + Angular.js Web应用程序中的用户身份验证

Web API和Angular 5令牌认证-登录后获取用户信息

使用angular从Firebase身份验证中删除用户

确保在Angular中对用户进行身份验证

删除用户身份验证的Firebase angular 5

如何通过具有node和express的JWT身份验证获取用户详细信息?

Angular 5身份验证

如何通过组织身份验证从Blazor Server中的身份获取用户属性

带有身份验证的django和angular.js

Angular 2 从服务获取 Google 身份验证状态

Angular Firebase ng如果用户通过了身份验证,则侦听器无法在页面重新加载时工作

如何使用node.js中的基本身份验证从URL获取用户名和密码?