我正在用spring boot编写一个RESTful api.

我正在使用春季靴子,运动衫,mongo db,swagger,spring boot security和jwt.

我已经编写了模型,请求数据库的存储库.现在我已经集成了Security和jwt令牌.

现在我需要离散用户的角色,因为用户无法调用需要管理员权限的路由.

我有一个登录路线,它返回一个令牌.这是我的SecurityConfig的代码

...

@Configuration

@EnableWebSecurity

public class SecurityConfig extends WebSecurityConfigurerAdapter{

@Autowired

UserRepository userRepository;

@Override

public void configure(HttpSecurity httpSecurity) throws Exception {

httpSecurity.csrf().disable().authorizeRequests()

.antMatchers("/").permitAll()

.antMatchers("/api/swagger.json").permitAll()

.antMatchers(HttpMethod.POST, "/login").permitAll()

.antMatchers("/api/*").authenticated()

.and()

.addFilterBefore(new JWTLoginFilter("/login", authenticationManager(), userRepository),

UsernamePasswordAuthenticationFilter.class)

.addFilterBefore(new JWTAuthenticationFilter(),

UsernamePasswordAuthenticationFilter.class);

}

}

我编写了JWTLoginFilter,当用户登录时返回令牌

...

@Override

public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) throws AuthenticationException, IOException, ServletException {

Credential creds = new ObjectMapper().readValue(req.getInputStream(), Credential.class);

User user = userRepository.login(creds);

if (user == null)

throw new BadCredentialsException("");

UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(

creds.getUsername(),

creds.getPassword()

);

return token;

}

...

我想在我的端点类上插入这个方法

@PreAuthorize("hasRole('ROLE_ADMIN')")

这是端点的一部分

....

@Component

@Path("story")

@Api(value = "Story", produces = "application/json")

public class StoryEndpoint {

private static final Logger LOGGER = LoggerFactory.getLogger(StoryEndpoint.class);

@Autowired

StoryRepository storyRepository;

@GET

@Path("/")

@Produces(MediaType.APPLICATION_JSON)

@PreAuthorize("hasRole('ROLE_ADMIN')")

@ApiOperation(value = "Get All Story", response = Story.class)

@ApiResponses(value = {

@ApiResponse(code = 200, message = "hello resource found"),

@ApiResponse(code = 404, message = "Given admin user not found")

})

public Response getAllStory(){

Iterable stories = storyRepository.findAll();

LOGGER.info("getAllStory");

return (stories!=null) ? Response.ok(stories).build() : Response.ok(ResponseErrorGenerator.generate(Response.Status.NOT_FOUND)).status(Response.Status.NOT_FOUND).build();

}

....

我如何建立一种机制来为用户分配角色以及如何在令牌中传递角色并在路由中离散用户的角色?

java–jwt_java – Spring引导如何使用jwt管理用户角色相关推荐

  1. oracle中角色的用户和权限管理,用户角色与权限控制

    一.oracle中的用户 系统用户:sys.system(系统创建的用户) 登录命令:sqlplus sys/密码 as sysdba 备注:sys是oracle数据库中最高权限用户,角色为sysdb ...

  2. Kafka的灵魂伴侣Logi-KafkaManger(5)之运维管控–平台管理(用户管理和平台配置)

    推荐一款非常好用的kafka管理平台,kafka的灵魂伴侣 滴滴开源Logi-KafkaManager 一站式Kafka监控与管控平台 技术交流 有想进滴滴LogI开源用户群的加我个人微信: jjdl ...

  3. 【java毕业设计】基于javaEE+Spring的新闻发布及管理系统设计与实现(毕业论文+程序源码)——新闻发布及管理系统

    基于javaEE+Spring的新闻发布及管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+Spring的新闻发布及管理系统设计与实现,文章末尾附有本毕业设计的论文和源 ...

  4. 【java毕业设计】基于Spring Boot+mysql的酒店管理系统设计与实现(程序源码+毕业论文)-酒店管理系统

    基于Spring Boot+mysql的酒店管理系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的酒店管理系统设计与实现,本论文只截取部分文章重点,文 ...

  5. 后端技术:Java中Spring 和 Spring Boot 有哪些区别,看完你就明白了!

    概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累.我慢慢理解了这两个框架到底有什么区别,相信对 ...

  6. 《深入理解 Spring Cloud 与微服务构建》第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统 文章目录 <深入理解 Spring Cl ...

  7. 用Spring Security做分布式权限管理 - 卷一基本功

    我们但凡做一个系统,这个系统不是在封闭环境中,不是只给一个人用,为了保证系统与数据安全,那么就会涉及到权限控制,权限控制这个东西可以说是很多系统的基础,因为我们不能让所有人对系统上的所有资源都进行同样 ...

  8. Spring Security Oauth2 JWT 实现用户认证授权功能

    Spring Security Oauth2 JWT 一 用户认证授权 1. 需求分析 1.1 用户认证与授权 什么是用户身份认证? 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份 ...

  9. 适用于Java开发人员的微服务:管理安全性和机密

    关于麦洛 麦洛是 Java 开发者和技术爱好者. 对 Java 相关技术特别感兴趣,包括 javaee. Spring系列. 微服务等 作者:Andrey Redko 原文:Microservices ...

最新文章

  1. CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
  2. html px转换,pc端px转换为rem针对屏幕分辨率进行页面适配
  3. c语言编程中句柄无效怎么解决,句柄无效,手把手教你句柄无效怎么解决
  4. HDU 3938 Portal
  5. 如何在CSDN博客中显示图片而不是链接
  6. 基于spring boot 的ssm项目的简单配置
  7. 32岁武汉硕士毕业4年后重新高考,考上本硕需再读8年:“不是一时冲动”
  8. android 外部内容分享到app内,外部跳转APP
  9. java值传递string_关于java:按值传递(StringBuilder与String)
  10. linux c 创建新线程,Linux C Phread 入门1---线程创建
  11. TensorFlow 中 tf.app.flags.FLAGS 的用法介绍
  12. webstrom 调试 html,【译】使用 WebStorm 调试 Nuxt.js
  13. Oracle中“行转列”的实现方式
  14. 一个被加入下载QQ盗号木马Trojan.PSW.QQPass.rie代码的网站
  15. 腾达ap设置说明_腾达无线路由器ap模式如何设置
  16. 在react中使用swiper/react
  17. Python实战项目:基于jupyter notebook处理16年美国总统大选数据
  18. linux封包工具下载,Linux 的 ngrep 網路封包分析工具使用教學
  19. ubuntu 解决自动休眠问题
  20. Java调用Cplex的基础简单教程

热门文章

  1. 在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
  2. C#中 paint()与Onpaint()的区别
  3. C#之操作窗口模拟键鼠事件文件监控等知识使用
  4. android 渠道号_亲测:安卓打渠道包神器,1分钟出自动出100个渠道包
  5. 开发板接传感器蜂鸣器不断_迅为IMX6ULL终结技开发板初体验
  6. ajax二级联动源代码,Ajax二级联动菜单实现原理及代码
  7. 小猿圈Java学习之通过命令行设置属性值
  8. Docker搭建NSQ实时分布式消息集群
  9. 【对讲机的那点事】450MHz模拟无线列调的工作原理(连载五)
  10. mysql5.623 GTID主从复制+半同步复制安装与配置