【Web前端问题】spring security 前端登录后,请求后台api报302
问题描述
我在spring boot项目中引入有了security" title="spring security">spring security来做登录验证这样的事情.因为是前后端分离的项目,所以,我的前端有个这样的登录请求
function login(){ $.ajax({
useDefaultXhrHeader: false,
type:"post",
url:"http://127.0.0.1:8080/user/login",
data:{"userName": document.getElementById("userName").value,
"password":document.getElementById("password").value},
dataType:'json',
success:function (result) {
console.log(result);
if(result["code"] == 0) {
showVideoByAll();
setCookie("username",result["username"],1);
alert("login success");
// location.href = "./index.html";
} else {
alert("invalid password or userName")
}
},
error:function () {
alert("error")
}
});
}
在登录后,我使用ajax调后台的接口
function showVideoByAll(){/**/ $.ajax({
useDefaultXhrHeader: false,
type:"GET",
url:"http://127.0.0.1:8080/video/selectVideoByAll",
data:"",
dataType:'json',
success:function (result) {
alert("success")
console.log(result);
},
error:function () {
alert("error");
}
});
}
这是后台的security配置
@Override protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.formLogin()
.loginProcessingUrl("/user/login")
.usernameParameter("userName")
.passwordParameter("password")
.successHandler(myAuthenticationSuccessHandler)
.failureHandler(myAuthenticationFailureHandler)
.and()
.authorizeRequests()
.antMatchers("/user/register","/user/login",
"/swagger-ui.html",
"/swagger-resources/**",
"/webjars/**",
"/v2/api-docs",
"Swagger2Config").permitAll()
.anyRequest().authenticated()
.and()
.logout()
.logoutUrl("/user/logout")
.logoutSuccessHandler(myLogoutSuccessHandler)
.permitAll()
.and()
.cors().and()
.csrf().disable();
}
可以看到我配置了
.csrf().disable();
这是后台controller的部分代码
@RestController@CrossOrigin
@RequestMapping("/video")
public class VideoController {
@Autowired
private VideoDAO videoDAO;
/**
* @return
*/
@RequestMapping(value = {"/selectVideoByAll"}, method = RequestMethod.GET)
public ResultModel selectVideoByAll() {
try {
List<Video> videoList = videoDAO.selectVideoByAll();
Map<String, Object> map = new HashMap<String, Object>();
map.put("content", videoList);
return ResultUtil.result(0, "", map);
} catch (Exception e) {
return ResultUtil.result(404, e.getMessage(), null);
}
}
...
我在前端成功登录,
我想这确实是登录成功了吧,然后我的showVideoByAll()请求确实这样的结果
可以看到showVideoByAll请求的cookie值和login的也不一样,我不是很清楚是什么原因导致的.
总结起来,问题就是,我登录成功了,但是请求api还是失败.当然,我用后台的地址直接访问是没有问题的.
so,有人可以帮助我一下吗?感谢感谢,真心求教!
回答:
这是跨域问题
以上是 【Web前端问题】spring security 前端登录后,请求后台api报302 的全部内容, 来源链接: utcz.com/a/141258.html