私はspring.Iに新しいですが、login.Theユーザーログインの方法は、コードを次のものが含まれ、ユーザーのためのAPIを作成しました:春の式ベースのアクセス制御の使い方は?
Authentication auth =new UsernamePasswordAuthenticationToken(repo.findByEmail(user.getEmail()), null, repo.findByEmail(user.getEmail()).getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
Principal principal= SecurityContextHolder.getContext().getAuthentication();
return (User) auth.getPrincipal();
ログインAPIは私に次のようなJSONを与える:
{
"userId": 1,
"userName": "ramesh khadka",
"email": "[email protected]",
"enabled": true,
"role": "Manager",
"username": "ramesh khadka",
"authorities": [
{
"authority": "ROLE_Manager"
}
],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true
}
私が持っています別のAPIが示されている、私がメッセージ以下のAPIを呼び出すgranted.When当局をチェックする@PreAuthorize(「hasAuthority( 『ROLE_Managerを』)」)を使用してすべてのユーザーを取得します -
{
"error": "unauthorized",
"error_description": "Full authentication is required to access this resource"
}
私は何をしているのか分かりません。誰かが私に助けてくれますか?
マイAuthorizationServerがある: -
@Configuration
@EnableAuthorizationServer
public class SecurityServer extends AuthorizationServerConfigurerAdapter {
@Autowired
@Qualifier("userDetailsService")
private UserDetailsService userDetailsService;
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.checkTokenAccess("isAuthenticated()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
// super.configure(clients);
clients.inMemory()
.withClient("test")
.accessTokenValiditySeconds(3600)
.authorizedGrantTypes("authorization_code","refresh_token","password","client_credentials")
.secret("user")
.scopes("read", "write", "trust")
.redirectUris("/error")
.resourceIds("resource");
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(this.authenticationManager);
endpoints.userDetailsService(userDetailsService);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
}
あなたは春のセキュリティ設定を追加することができます。あなたはこれらのリンクを参照することが多くのための
? –
@AnupamaBoorlagadda私は私のセキュリティコードを含んでいます –