使用 angularjs 使用安全的 spring rest 服务

Posted

技术标签:

【中文标题】使用 angularjs 使用安全的 spring rest 服务【英文标题】:Consume secured spring rest service with angularjs 【发布时间】:2015-08-04 18:35:38 【问题描述】:

好吧,我有一个安全的休息服务,只是使用带有静态凭据“用户”和“密码”的 spring-security。当我使用其余服务时,会在浏览器上显示登录对话框,效果很好。

当我想使用使用 Spring 的 Web 应用程序来使用我的服务时,问题出现了,我不知道如何继续,我感谢任何解决方案,我是 Spring 的新手,我不知道不知道我是否必须在我的休息服务中添加一些方法,或者只有一种方法可以从 webapp 发送凭据。

这是我的休息服务的安全配置。

@Configuration
@Order(value = SecurityProperties.ACCESS_OVERRIDE_ORDER)
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter 
    private AuthenticationProvider authenticationProvider;
    protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception 
        auth.authenticationProvider(authenticationProvider);
    

    @Override
    protected void configure(HttpSecurity http) throws Exception 
        http
            .authorizeRequests().anyRequest()
            .fullyAuthenticated().and().formLogin().permitAll();
    

我正在尝试使用 Angular 服务来使用服务:

restwebapp.controller('restController', function($scope, Servicio)
    Servicio.GetGreeting.get(, function(response)
        $scope.hello = response;
    );
)

restwebapp.factory('Servicio', function($resource)
    return
        GetGreeting: $resource( 'http://localhost:8080/greeting', , 
        get:   

            method:'GET', 
        
        )
    
)

该服务以 json 格式返回 fromlogin,是否有另一种方法可以对我的 rest 服务进行身份验证,或者有什么更好的方法。

提前致谢

【问题讨论】:

【参考方案1】:

对于没有表单的简单基本认证,你可以试试这个:

@Override
protected void configure(HttpSecurity http) throws Exception 
     http
         .authorizeRequests().anyRequest()
         .fullyAuthenticated().and().httpBasic();

【讨论】:

感谢您的回答,我做到了,但不起作用我不知道如何在客户端使用 Angular 或 Spring mvc 登录 检查这个问题:***.com/questions/17959563/…

以上是关于使用 angularjs 使用安全的 spring rest 服务的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot - 具有安全性的 Angularjs $stateProvider

AngularJS 和 Spring MVC 安全性

spring安全管理网关和angularjs异常

AngularJS + Spring 安全记住我功能

Spring 安全 REST API

带有 angularJS web 应用程序和 android 应用程序的 spring 安全性