spring oauth2 资源服务器问题

我定义了三个类

@Configuration
@EnableWebSecurity
public class BCSecurityConfig extends WebSecurityConfigurerAdapter{

    @Autowired
    private DataSource dataSource;


    @Override
    public void configure(HttpSecurity http) throws Exception {
        super.configure(http);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication().dataSource(dataSource);
    }

}

另外两个是认证服务器

@Configuration
@EnableAuthorizationServer
public class BCAuthorizationServerConfig {

}

和资源服务器

@Configuration
@EnableResourceServer
public class BCResourceServerConfig extends ResourceServerConfigurerAdapter{

    @Override
    public void configure(HttpSecurity http) throws Exception {
        //表单登录 方式
        http.formLogin().and()
                .authorizeRequests()
                .antMatchers("/api/**")
                .authenticated()
                .antMatchers("/oauth/token").permitAll()
                .and()
                .csrf().disable();
    }

}

有一个问题就是,当你配置了资源服务器的时候访问需要认证的链接返回的是
图片说明
这是没有问题的,但是我想实现的是当你在没有认证的情况下访问其他的链接的时候自动跳转到登录页,也就是我想让BCResourceServerConfig资源服务器不处理的链接交给我配置的BCSecurityConfig这个类处理?请问怎么实现呢,请不吝赐教不胜感激!!!

我的最终目的是它既能提供安全的网页服务(登陆验证)!又能够通过oauth提供token

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
springcloud security oauth2, 资源服务器从mysql查询用户信息需要userId,如果通过oauth2认证服务器认证了,之后资源服务器要后从哪里可以拿到userId呢

资源服务器从mysql查询用户信息需要userId,如果通过oauth2认证服务器认证了,之后资源服务器要要从哪里可以拿到userId呢

使用Spring cloud security Oauth2,资源服务器的堆内存使用会持续增长

使用Spring cloud security Oauth2进行接口鉴权,资源服务器使用的堆内存会持续增长,直到设置的-Xmx值,如果使用security.ignored忽略该接口鉴权,就没有这种情况,请问这种情况要怎样解决呀? 接口鉴权的情况下: ![接口鉴权](https://img-ask.csdn.net/upload/201911/28/1574938508_782517.png) 接口取消鉴权的情况下: ![接口取消鉴权](https://img-ask.csdn.net/upload/201911/28/1574938470_797747.png) 资源服务器配置如下: ``` @Configuration @EnableResourceServer public class ResourceConfiguration extends ResourceServerConfigurerAdapter { private static final String DEMO_RESOURCE_ID = "*"; @Autowired private RedisConnectionFactory connectionFactory; @Bean public RedisTokenStore tokenStore() { return new RedisTokenStore(connectionFactory); } @Override public void configure(ResourceServerSecurityConfigurer resources) { resources.resourceId(DEMO_RESOURCE_ID).stateless(true); } @Override public void configure(HttpSecurity http) throws Exception { // @formatter:off http // Since we want the protected resources to be accessible in the UI as well we need // session creation to be allowed (it's disabled by default in 2.0.6) .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) .and() .authorizeRequests()//请求授权 .anyRequest().authenticated();//所有的url通过认证后才可以访问 } } ```

spring oauth2(jwt)密码模式为什么还需要clientId,多个资源服务器为什么能用同一个token?

1.spring oauth2密码模式为什么还需要clientId? 2.如果有多个资源服务器,clientId该用哪一个的? 3.为什么随便传其中一个clientId获得的token所有资源服务器都能通过验证?

急:使用springsecurity+oauth2+jwt认证服务器和资源服务器在同一个服务中,jwt使用的非对称加密,应该怎么配置该模块?

使用springsecurity+oauth2+jwt认证服务器和资源服务器在同一个服务中,jwt使用的非对称加密,应该怎么配置该模块。请大佬提供解决思路,万分感谢

spring security和spring oauth结合后 spring security配置不管用了

> spring security ``` @Configuration @EnableResourceServer public class AppWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Autowired private ZuulProperties zuulProperties; @Autowired private AuthenticationSuccessHandler appAuthenticationSuccessHandler; @Autowired private AuthenticationFailureHandler appAuthenticationFailureHandler; @Autowired private AccessDeniedHandler appAccessDeniedHandler; @Bean @Override public AuthenticationManager authenticationManagerBean() throws Exception { AuthenticationManager manager = super.authenticationManagerBean(); return manager; } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers(HttpMethod.GET,zuulProperties.getAuth().toGetAdapter()) .permitAll() .and() .authorizeRequests() .antMatchers(HttpMethod.POST,zuulProperties.getAuth().toPostAdapter()) .permitAll() .and() .authorizeRequests() .anyRequest() .authenticated() .and() .exceptionHandling().accessDeniedHandler(appAccessDeniedHandler) .and() .csrf().disable(); } ``` > spring oauth相关 ``` @Configuration @EnableAuthorizationServer public class AppAuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Autowired private final AuthenticationManager authenticationManager; @Autowired private UserDetailsService userDetailsService; @Autowired private ZuulProperties zuulProperties; @Autowired private TokenStore tokenStore ; @Autowired(required = false) private JwtAccessTokenConverter jwtAccessTokenConverter; @Autowired(required = false) private TokenEnhancer jwtTokenEnhancer; @Autowired private PasswordEncoder passwordEncoder; public AppAuthorizationServerConfig(AuthenticationManager authenticationManager) { this.authenticationManager = authenticationManager; } @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { InMemoryClientDetailsServiceBuilder builder = clients.inMemory(); OAuth2ClientProperties[] clientProperties = zuulProperties.getOauth().getClients(); if(ArrayUtils.isNotEmpty(zuulProperties.getOauth().getClients())) { for (OAuth2ClientProperties oAuth2ClientProperties : clientProperties) { builder.withClient(oAuth2ClientProperties.getClientId()) .secret(oAuth2ClientProperties.getClientSecret()) //token有效时间 .accessTokenValiditySeconds(oAuth2ClientProperties.getAccessTokenValiditySeconds()) //验证模式 .authorizedGrantTypes("password","authorization_code","client_credentials","implicit","refresh_token") //刷新时间 .refreshTokenValiditySeconds(3600*24*100) //跳转地址 .redirectUris("ws.28ph.cn") //权限 .scopes("all"); } } } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager) .tokenStore(tokenStore) .userDetailsService(userDetailsService) .reuseRefreshTokens(true); if(jwtAccessTokenConverter != null && jwtTokenEnhancer!=null) { TokenEnhancerChain enhancerChain = new TokenEnhancerChain(); List<TokenEnhancer> tokenEnhancers = new ArrayList<>(); tokenEnhancers.add(jwtTokenEnhancer); tokenEnhancers.add(jwtAccessTokenConverter); enhancerChain.setTokenEnhancers(tokenEnhancers); endpoints .tokenEnhancer(enhancerChain) .accessTokenConverter(jwtAccessTokenConverter); } } @Override public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { security.allowFormAuthenticationForClients() .passwordEncoder(passwordEncoder) .tokenKeyAccess("permitAll()") .checkTokenAccess("isAuthenticated()"); } } ``` 问题的产生:我在spring security配置了几个不需要拦截的uri,但是加入spring oauth 全部被拦截了,如果删掉@EnableResourceServer会出现 发出来的token 认证不了url的问题。。 然后我想大不了不用spring oauth 自带的发token方式。然后我在spring security的成功handler上下发token ,以下是代码 ``` /** * 认证成功跳转 * @author w4837 * */ @Component(value = "AppAuthenticationSuccessHandler") @Slf4j public class AppAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { @Autowired private ObjectMapper objectMapper; @Autowired private ClientDetailsService clientDetailsService; @Autowired private AuthorizationServerTokenServices authorizationServerTokenServices; @Override public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { log.info("登陆成功"); String header = httpServletRequest.getHeader("Authorization"); //请求头包含Authorization 并且以"Basic "开始 if (header == null || !header.startsWith("Basic ")) { throw new UnapprovedClientAuthenticationException("请求头中无Authorization信息"); } try { String[] tokens = extractAndDecodeHeader(header, httpServletRequest); assert tokens.length == 2; String clientId = tokens[0]; String clientSecret = tokens[1]; ClientDetails clientDetails = clientDetailsService.loadClientByClientId(clientId); if(clientDetails == null) { throw new UnapprovedClientAuthenticationException("clientId:"+clientId+"对应的信息不存在。"); }else if(!StringUtils.equals(clientSecret, clientDetails.getClientSecret())) { throw new UnapprovedClientAuthenticationException("clientId:"+clientId+"对应的信息不匹配。"); } @SuppressWarnings("unchecked") TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, clientId, clientDetails.getScope(),"custom"); OAuth2Request auth2Request = tokenRequest.createOAuth2Request(clientDetails); OAuth2Authentication auth2Authentication = new OAuth2Authentication(auth2Request, authentication); OAuth2AccessToken createAccessToken = authorizationServerTokenServices.createAccessToken(auth2Authentication); // 判断需要的返回类型 httpServletResponse.setContentType(ZuulAppConstant.CONTENT_TYPE_JSON); httpServletResponse.getWriter().write(objectMapper.writeValueAsString(createAccessToken)); } catch (Exception e) { log.error(e.getMessage()); } } /** * 解析header中编码后的数据 * * @param header * @param request * @return * @throws IOException */ private String[] extractAndDecodeHeader(String header, HttpServletRequest request) throws IOException { byte[] base64Token = header.substring(6).getBytes("UTF-8"); byte[] decoded; try { decoded = Base64.decode(base64Token); } catch (IllegalArgumentException e) { throw new BadCredentialsException("Failed to decode basic authentication token"); } String token = new String(decoded, "UTF-8"); int delim = token.indexOf(":"); if (delim == -1) { throw new BadCredentialsException("Invalid basic authentication token"); } return new String[] { token.substring(0, delim), token.substring(delim + 1) }; } ``` 结果 启动还是报循环依赖的错误 ``` *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | appAuthorizationServerConfig defined in file [F:\yulece_aike_ideaword\app-management\app-management-zuul\target\classes\com\yulece\app\management\zuul\authorization\AppAuthorizationServerConfig.class] ↑ ↓ | appWebSecurityConfigurerAdapter (field private org.springframework.security.web.authentication.AuthenticationSuccessHandler com.yulece.app.management.zuul.authorization.AppWebSecurityConfigurerAdapter.appAuthenticationSuccessHandler) ↑ ↓ | AppAuthenticationSuccessHandler (field private org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices com.yulece.app.management.zuul.authorization.handler.AppAuthenticationSuccessHandler.defaultAuthorizationServerTokenServices) ↑ ↓ | org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration (field private java.util.List org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration.configurers) └─────┘ ```

OAuth2的资源服务器怎么使用preAuthorize(hasRole('********'))?

配置了一个OAuth2的资源服务器,可以使用preAuthorize(hasAuthority='**'),但是考虑到还需要使用Activiti,但是Activiti本身和spring security强耦合,使用了hasRole,但是这样就一直报access denied,让我感觉activiti更新到7.0巨垃圾。但是问题还是要解决的,该怎么做呢?

java微服务使用的是springsecurity,oauth2,jwt认证授权,现在我的授权服务和资源服务没有分离,在一个服务中,请问怎么才能携带jwt令牌访问授权服务?求大佬解答,万分感谢

java微服务使用的是springsecurity,oauth2,jwt认证授权,现在我的授权服务和资源服务没有分离,在一个服务中,携带授权服务生成的jwt令牌能访问资源服务但是不能访问授权服务,请问怎么才能携带jwt令牌访问授权服务?求大佬解答,万分感谢

求OpenID整合spring security oauth2 实例

客户端利用openID作身份验证,然后绑定Oauth授权服务器,获取资源

oauth2在spring boot中如何给不同的客户端分别授权不同的资源(接口、api)?

spring oauth2在spring boot中(或用@Configuration)如何给不同的客户端分别授权不同的资源(接口、api)? 在spring中用配置文件可以达到:https://www.cnblogs.com/lexiaofei/p/7061392.html 但在spring boot中(或用@Configuration)需要怎么配置?

OAuth2.0获得了access_token但是访问资源服务器还是提示没有授权是什么问题?

最近在学习OAuth2.0的时候,已经获得了accesstoken![图片说明](https://img-ask.csdn.net/upload/202003/29/1585472677_637880.png) 但是我用这个token去访问资源服务器的时候提示 ![图片说明](https://img-ask.csdn.net/upload/202003/29/1585472779_286525.png) 我和网上给的教程做的一模一样,除了端口不一样,有没有大神帮忙解答一下

Spring security Oauth2 自定义拦截器如何在验证token之前执行?

想通过拦截器的方式把所有的请求 带一个token过去 然后再去验证。 现在问题是没有等到我的拦截器执行就报401了 无权限了。 ``` @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) @Order(-1) public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Autowired private SuccessAuthenticationSuccessHandler successAuthenticationSuccessHandler; @Bean public BCryptPasswordEncoder passwordEncoder() { // 设置默认的加密方式 return new BCryptPasswordEncoder(); } @Bean @Override public UserDetailsService userDetailsService() { return new UserDetailsServiceImpl(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // 使用自定义认证与授权 auth.userDetailsService(userDetailsService()); } @Override public void configure(WebSecurity web) throws Exception { // 将 check_token 暴露出去,否则资源服务器访问时报 403 错误 web.ignoring().antMatchers("/oauth/check_token"); } @Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Override protected void configure(HttpSecurity http) throws Exception { //自定义TokenFilter 不执行为什么? http.addFilterAt(new TokenFilter(), FilterSecurityInterceptor.class); http.requestMatchers().antMatchers(HttpMethod.OPTIONS, "/oauth/token") .and() .cors() .and() .csrf().disable(); } ``` ``` @Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Autowired private AdminPermissionRepository adminPermissionRepository; @Autowired private SuccessAuthenticationSuccessHandler successAuthenticationSuccessHandler; @Override public void configure(HttpSecurity http) throws Exception { List<AdminPermission> permissions = adminPermissionRepository.findAll(); http .headers().frameOptions().sameOrigin(); http .exceptionHandling() .and() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() .antMatchers("/","/login","/static/**","/assets/**").permitAll(); permissions.forEach(permission->{ try { http.authorizeRequests().antMatchers(permission.getUrl()).hasAuthority(permission.getNameEn()); } catch (Exception e) { e.printStackTrace(); } }); } @Override public void configure(ResourceServerSecurityConfigurer resources) throws Exception { super.configure(resources); } } ```

关于spring Security OAuth2 生成Token和Jwt的问题

![图片说明](https://img-ask.csdn.net/upload/201805/29/1527563054_268262.png) 途中要求生成token和jwt,然后通过token换取jwt,求大神告知如何操作,最好有个demo,

Spring Security OAuth2

在使用Spring Security OAuth2测试时,授权之后报错: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Dec 20 16:14:18 CST 2017 There was an unexpected error (type=Unauthorized, status=401). Authentication Failed: Could not obtain user details from token 客户端DEBUG信息: 2017-12-20 16:14:17.948 DEBUG 7932 --- [nio-8082-exec-4] o.s.s.oauth2.client.OAuth2RestTemplate : Created GET request for "http://localhost:8081/resource/user" 2017-12-20 16:14:17.967 DEBUG 7932 --- [nio-8082-exec-4] o.s.s.oauth2.client.OAuth2RestTemplate : Setting request Accept header to [application/json, application/*+json] 2017-12-20 16:14:18.204 DEBUG 7932 --- [nio-8082-exec-4] o.s.s.oauth2.client.OAuth2RestTemplate : GET request for "http://localhost:8081/resource/user" resulted in 401 (null); invoking error handler 2017-12-20 16:14:18.213 WARN 7932 --- [nio-8082-exec-4] o.s.b.a.s.o.r.UserInfoTokenServices : Could not fetch user details: class org.springframework.security.oauth2.common.exceptions.InvalidRequestException, Possible CSRF detected - state parameter was required but no state could be found 2017-12-20 16:14:18.280 DEBUG 7932 --- [nio-8082-exec-4] uth2ClientAuthenticationProcessingFilter : Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Could not obtain user details from token 认证服务器DEBUG信息: 2017-12-20 16:14:08.230 DEBUG 8704 --- [nio-8080-exec-7] o.s.s.w.a.i.FilterSecurityInterceptor : Secure object: FilterInvocation: URL: /favicon.ico; Attributes: [authenticated] 2017-12-20 16:14:08.230 DEBUG 8704 --- [nio-8080-exec-7] o.s.s.w.a.i.FilterSecurityInterceptor : Previously Authenticated: org.springframework.security.authentication.AnonymousAuthenticationToken@6fa90ed4: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffc7f0c: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 41D379AFB367FD4316A06BAC18AB91DA; Granted Authorities: ROLE_ANONYMOUS 2017-12-20 16:14:08.230 DEBUG 8704 --- [nio-8080-exec-7] o.s.s.access.vote.AffirmativeBased : Voter: org.springframework.security.web.access.expression.WebExpressionVoter@72127537, returned: -1 2017-12-20 16:14:08.231 DEBUG 8704 --- [nio-8080-exec-7] o.s.s.w.a.ExceptionTranslationFilter : Access is denied (user is anonymous); redirecting to authentication entry point 资源服务器DEBUG信息: 2017-12-20 16:14:18.132 DEBUG 10100 --- [nio-8081-exec-1] o.s.security.web.FilterChainProxy : /user at position 5 of 11 in additional filter chain; firing Filter: 'OAuth2AuthenticationProcessingFilter' 2017-12-20 16:14:18.137 DEBUG 10100 --- [nio-8081-exec-1] p.a.OAuth2AuthenticationProcessingFilter : Authentication request failed: error="invalid_token", error_description="Invalid access token: fbde02a4-d6b9-41c8-a8aa-332390482c1e" 2017-12-20 16:14:18.192 DEBUG 10100 --- [nio-8081-exec-1] w.c.HttpSessionSecurityContextRepository : SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 2017-12-20 16:14:18.199 DEBUG 10100 --- [nio-8081-exec-1] s.s.o.p.e.DefaultOAuth2ExceptionRenderer : Written [error="invalid_token", error_description="Invalid access token: fbde02a4-d6b9-41c8-a8aa-332390482c1e"] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@74bcb39b] 2017-12-20 16:14:18.200 DEBUG 10100 --- [nio-8081-exec-1] s.s.w.c.SecurityContextPersistenceFilter : SecurityContextHolder now cleared, as request processing completed 网上找了很久都没有解决,有研究过的大神指教一下

Spring Security OAuth2 找不到类型

![图片说明](https://img-ask.csdn.net/upload/201908/26/1566820448_485922.png) 错误提示 2019-08-26 19:45:19.912 WARN 2836 --- [nio-8099-exec-4] o.s.s.o.provider.endpoint.TokenEndpoint : Handling error: InvalidRequestException, Missing grant type

zuul+oauth2 怎么获取当前用户信息,为什么现在只能获取用户名?

springcloud + zuul + oauth2 ## 认证服务器 ``` @Configuration @EnableAuthorizationServer public class OAuth2AuthServerConfig extends AuthorizationServerConfigurerAdapter{ @Autowired public CustomWebResponseExceptionTranslator customWebResponseExceptionTranslator; @Autowired private UserDetailsService userDetailsService; @Autowired private AuthenticationManager authenticationManager; @Autowired private DataSource dataSource; @Bean public TokenStore tokenStore(){ return new JwtTokenStore(jwtTokenEnhancer()); } @Bean public JwtAccessTokenConverter jwtTokenEnhancer() { JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(new ClassPathResource("weijie.key"),"weijie".toCharArray()); converter.setKeyPair(keyStoreKeyFactory.getKeyPair("weijie")); return converter; } /** * 用户合法性校验 * @param endpoints * @throws Exception */ @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.exceptionTranslator(customWebResponseExceptionTranslator) .userDetailsService(userDetailsService) .tokenStore(tokenStore()) .tokenEnhancer(jwtTokenEnhancer()) .authenticationManager(authenticationManager); } /** * 配置客户端应用详细信息 * @param clients * @throws Exception */ @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.jdbc(dataSource); } @Override public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { security.tokenKeyAccess("isAuthenticated()") .checkTokenAccess("isAuthenticated()"); } } ``` ``` @Component public class UserDetailsServiceImpl implements UserDetailsService { @Autowired private LoginUserMapper loginUserMapper; //这就是构建用户所必需的的三个属性。用户名、密码、权限、 @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { LoginUser loginUser = loginUserMapper.selectOne(new QueryWrapper<LoginUser>().eq("username",username)); return loginUser; } } ``` ## 资源服务器 ``` @GetMapping("role") public Result getRoleMenus(@AuthenticationPrincipal String username){ List<Menu> menus = menuService.getRoleMenus(username); return Result.success(menus); } ``` 为什么SecurityContextHolder.getContext().getAuthentication().getPrincipal();和@AuthenticationPrincipal 注解都只能获取当前用户的用户名? 怎么配置可以获取 用户ID等信息呢?

SpringCloud 微服务统一认证必须用Oauth吗?

最近刚刚接触微服务,有一个相关的项目。按照老师的要求要把登录单独作为一个微服务,此外还有仪器管理、人事管理和实验数据管理三个微服务(人事和数据都做好了,只是要整合进去)。 然后就遇到了好几个问题: 1、已经做好的人事和数据系统分别用的token和shiro的方式进行的登录,人事确实采用的是微服务的框架,但是把登录和人事管理做在一起了。如果要直接整合的话,仪器和数据怎么获得权限? 2、在网上查了几篇关于token的还有关于统一认证的,发现还有一个叫OAuth的东西,做统一认证必须要用这个吗?把token存放在redis里面,其它的微服务能不能直接读取到token?然后获取到了token,是不是直接用服务消费的方式就可以调用登录服务的函数获取权限信息??所以有没有大佬专门大佬专门写一篇帖子整理一下各种登录授权的方式,突然一下看这么多感觉很凌乱 3、怎样设置只能通过网关进行访问而禁止直接访问某个微服务?网上查看的帖子说的有禁用其它端口然后在网关中设置白名单,然后还有用spring cloud gateway来进行设置,这个和zuul有多大的区别?

springcloud client如何访问服务的静态资源(如图片)

springcloud client如何访问服务的静态资源(如图片),如何调用服务的导出接口(比如服务有一个导出为excel的接口); 场景:A服务下有一些图片,现在需要通过client去访问该图片并展示到页面上;A服务有一个导出接口,client需要调用该接口进行导出操作 调用服务的get和post接口是通过restTemplate.getForObject或restTemplate.postForObject调用的

在spring boot项目中遇到跨域访问问题

项目使用了OAuth2.0认证,现在调用接口时遇到了跨域访问的问题。在filter中配置了允许跨域访问,访问不需要token的接口时一切正常,但被OAuth保护的资源就无法通过ajax跨域访问,我的分析是,被oauth保护的接口首先被oauth系统拦截,此时还未进行到filter,所以是不允许跨域访问的,而不允许跨域,被添加到http请求头部无法被oauth系统获取,所以请求无法通过。对spring boot不太精通,想问spring boot中一个请求的声明周期是怎样的,能否在请求到达oauth之前添加类似过滤器的代码,使request允许跨域

SpringSecurity2.0.4中如何配置 动态管理资源,用户及用户权限

如题。(注意是2.x,不是acegi 1.x) 固定的静态配置已经做了个例子,可以运行。 我的设计是:用户,角色,资源,菜单。用户拥有角色,角色拥有资源和菜单,当用户登录,显示相应菜单,当访问某个url,判断时候有权限。 想配置达到的效果: 1.用户要与数据库之间验证 2.管理的url资源不是在配置文件里固定好的,是动态管理的 3.用户的角色也不是在配置文件里写好的。 最好说的详细点或一个完整的例子,谢谢。 就只有10分了,希望大家能帮忙解决问题。 [b]问题补充:[/b] brunoplum谢谢你的回答,看过了,下载下附件,也没能运行成功,刚开始还解释的比较清楚,后来的java类里的注释就少了,而且还是英文的,看起来很吃力,不过还是谢谢你的回答。希望有亲身经历做过的高手给个完整的例子。(本人愚笨)

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

C++(数据结构与算法)78:---分而治之

一、分而治之的思想 分而治之方法与软件设计的模块化方法非常相似 分而治之通常不用于解决问题的小实例,而要解决一个问题的大实例。一般步骤为: ①把一个大实例分为两个或多个更小的实例 ②分别解决每个小实例 ③把这些小实例的解组合成原始大实例的解 二、实际应用之找出假币 问题描述 一个袋子有16个硬币,其中只有一个是假币,这个假币比其他的真币重量轻(其他所有真币的重量都是相同的)...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

立即提问
相关内容推荐