我尝试为其他应用程序添加安全性。
我配置了扩展WebSecurityConfigurerAdapter的类。
http.authorizeRequests().antMatchers("/rest/**").authenticated();
http.csrf().disable();
http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint);
http.formLogin().successHandler(authenticationSuccessHandler);
http.formLogin().failureHandler(authenticationFailureHandler);
我有一个login.html,index.html在index.html中加载(通过jquery)其他一些html文件。
我尝试使用curl
访问服务curl -i -X POST -d username=test -d password=test http://localhost:8080/rest/cities
我得到了
HTTP/1.1 401 Unauthorized
所有带休息的网址都是安全的,但我提供的用户名和密码应该是单词。
当我调试时,我看到实现UserDetailsService的我的类从未调用过loadUserByUsername方法。
有些东西没有正确地进行链接。
答案 0 :(得分:1)
您需要登录才能访问受限资源。 Spring安全性提供了执行身份验证的默认入口点。这就是你给定链接的这一部分:
jQuery(document).ready(function ($) {
$('#loginform').submit(function (event) {
event.preventDefault();
var data = 'username=' + $('#username').val() + '&password=' + $('#password').val();
$.ajax({
data: data,
timeout: 1000,
type: 'POST',
url: '/login'
}).done(function(data, textStatus, jqXHR) {
var preLoginInfo = JSON.parse($.cookie('dashboard.pre.login.request'));
window.location = preLoginInfo.url;
}).fail(function(jqXHR, textStatus, errorThrown) {
alert('Booh! Wrong credentials, try again!');
});
});
});
因此,您需要使用用户名和密码参数 POST / login 网址。这就是卷曲的方式:
curl -i -X POST -d username=user -d password=userPass -c /opt/cookies.txt
http://localhost:8080/rest/login
这样做是使用您的凭据登录并将给定的cookie存储在 cookies.txt 文件中。然后,您只需要在为获得服务器许可而执行的每个请求中附加该cookie:
curl -i --header "Accept:application/json" -X GET -b /opt/cookies.txt
http://localhost:8080/rest/cities
另见: