在基本的Facebook身份验证之后,我无法将用户重定向到上一页。相反,我被重定向到主页。我正在遵循https://spring.io/guides/tutorials/spring-boot-oauth2/
中提到的示例这是我的结构:
SocialController:
@RestController
public class SocialController {
@GetMapping("/user")
public Principal user(Principal principal) {
return principal;
}
}
test.html:
<div class="container unauthenticated">
With Facebook: <a href="login">click here</a>
</div>
<div class="container authenticated" style="display:none">
Logged in as: <span id="user"></span>
</div>
<script>
$.get("/user", function(data) {
console.log("Inside users: " + data);
$("#user").html(data.userAuthentication.details.name);
$(".unauthenticated").hide()
$(".authenticated").show()
});
</script>
主要方法:
@SpringBootApplication
@EnableOAuth2Sso
public class IvanstanevPortfolioApplication extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**", "/js/**", "/img/**", "/audio/**" , "/" ,"/index","/contacts","/about_me","/test")
.permitAll()
.anyRequest()
.authenticated();
}
public static void main(String[] args) {
SpringApplication.run(IvanstanevPortfolioApplication.class, args);
}
}
基本上,我想从Facebook检索用户名,并停留在他所在的页面(test.html)。相反,我被重定向到主页。花了整整一整天,找不到解决方案。 :\
答案 0 :(得分:0)
我有一个类似的问题,只是用户需要每次都返回同一页面而不是返回最后一页。
您可以说重定向页面是硬编码的...但这可能有帮助
从包org.springframework.social.connect.web
此类应@Override
的signIn方法,并且此方法必须返回String
。 此字符串表示您要转到的重定向资源。
如果您要重定向到首页,则只需返回null
即可。
@Service
public class FacebookSignInAdapter implements SignInAdapter {
@Override
public String signIn(
String localUserId,
Connection<?> connection,
NativeWebRequest request) {
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken(
connection.getDisplayName(), null,
Arrays.asList(new SimpleGrantedAuthority("FACEBOOK_USER"))));
return "/form";
}
}
有关详细信息,这里是有用的指南: https://www.baeldung.com/facebook-authentication-with-spring-security-and-social