分享程序网
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
  • 微服务

    • 介绍
  • 微服务搭建

    • 初步搭建
  • 服务发现

    • Eureka
    • nacos
  • 网关

    • zuul
    • 网关配置
    • 过滤器
    • 动态加载
  • 认证(Oauth)

    • 初始化项目
    • Oauth2配置
    • 对外接口
  • 通用服务

    • 通用功能父模块
    • redis
  • 任务调度

    • 任务调度服务
    • xxl-job示例
  • 业务服务

    • 业务设计

对外接口

项目中对外的接口一般来说只有两个,一个是用户认证获取用户信息,另一个就是登出时删除token。代码如下:

package com.shareprog.auth.controller;

import java.security.Principal;

import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.oauth2.provider.token.ConsumerTokenServices;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.AllArgsConstructor;

/**
 * @ClassName: AuthController
 * @Description: 权限控制层
 * @author cl
 * @date 2021年1月19日
 */
@RestController
@AllArgsConstructor
public class AuthController {

	private final ConsumerTokenServices consumerTokenServices;
	
	/**
	 * 
	 * @Title: getUser
	 * @Description: 获取用户信息
	 * @param principal 用户信息
	 * @return
	 */
	@RequestMapping("/oauth/user")
	@PreAuthorize("hasAuthority('role')")
	public Principal getUser(Principal principal) {
		return principal;
	}

	/**
	 * @Title: logout
	 * @Description: 登出操作,删除token
	 * @param token 令牌
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	@GetMapping("/oauth/logout")
	public ResponseEntity logout(String token) {
		if (consumerTokenServices.revokeToken(token)) {
			return ResponseEntity.ok().build();
		}
		return ResponseEntity.badRequest().build();
	}
}

Last Updated:
Contributors: clcheng
Prev
Oauth2配置