【发布时间】:2022-01-02 07:49:19
【问题描述】:
我正在使用 GitHub 作为授权服务器来实现 OAuth2 架构,以登录我的虚拟 Web 应用程序。一切正常。当我使用我的 GitHub 凭据登录时遇到问题,我希望重定向页面向用户显示一些消息,例如 Welcome XYZ,但我无法获取当前登录的用户名,而是显示了一个数字。我使用了主体对象和身份验证对象。请任何机构告诉我如何实现它?
这是 OAuth2 GitHub 配置的代码。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.oauth2.client.CommonOAuth2Provider;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
@Configuration
public class WebSecurityConfigurerAdapterImp extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.oauth2Login((c)->
{
c.clientRegistrationRepository(this.clientRegistrationRepository());
}
);
http.authorizeRequests().anyRequest().authenticated();
}
private ClientRegistrationRepository clientRegistrationRepository()
{
ClientRegistration c=this.clientRegistration();
return new InMemoryClientRegistrationRepository(c);
}
private ClientRegistration clientRegistration()
{
return CommonOAuth2Provider.GITHUB.getBuilder("github").clientId("72bc31d8b0304575442c").clientSecret("XYZSECRET").build();
}
}
用户登录后将被重定向到的 main_controller 代码。
package com.controllers;
import java.security.Principal;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Main_Controller {
@GetMapping("/")
@ResponseBody
public String HomePage(Authentication p)
{
System.out.println("Hellow "+p.getName());
return "Hello People.";
}
}
【问题讨论】:
标签: spring-boot spring-security-oauth2