java 鉴权登录,登录鉴权-JAVA语言

本文主要向大家介绍了登录鉴权-JAVA语言,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

登录鉴权:

1. 用户名+密码 登录请求

2. 后台接收登录请求,生成ToKen(用户名/密码正确) 返回token

3. 请求其他api 都带上token,后台校验token是否存在/过期

后台代码如下:

登录/登出 --------------

@RestController

@RequestMapping

class AuthController {

@Autowired

private lateinit var tokenService: TokenService

@Autowired

private lateinit var appUserService: AppUserService

@PostMapping(value = ["/auth/login"])

fun login(username: String, password: String,

request: HttpServletRequest): RestResponse {

val predicate = Predicate.eq("username", username).eq("password", password)

val user = appUserService.findOne(predicate) ?: return RestResponse(1, "用户不存在")

// 生成一个 token,保存用户登录状态

val tokenModel = tokenService.createToken(user.userId, user.nickname, Utils.getIp(request))

return RestResponse(0, mapOf(

"user" to user,

"token" to tokenModel.token,

"roles" to arrayOf("admin")))

}

@PostMapping(value = ["/auth/logout"])

fun logout(@RequestAttribute tokenModel: TokenModel): RestResponse {

tokenService.deleteToken(tokenModel.token)

return RestResponse(0, "success")

}

}

-----配置拦截器---------------------------

WebAppConfigurer.kt

override fun addInterceptors(registry: InterceptorRegistry) {

registry.addInterceptor(authInterceptor())

.excludePathPatterns("/auth/**")

.excludePathPatterns("/rest/**")

}

@Bean

fun authInterceptor(): AuthInterceptor {

return AuthInterceptor()

}

拦截器-------------------------------

@Component

class AuthInterceptor : HandlerInterceptorAdapter() {

@Autowired

private lateinit var tokenService: TokenService

@Throws(Exception::class)

override fun preHandle(request: HttpServletRequest, response: HttpServletResponse, handler: Any): Boolean {

//从header中得到token

val token = request.getHeader("x-token")

//验证token

val tokenModel = tokenService.checkToken(token)

if (tokenModel != null) {

//如果token验证成功,将token对应的用户id存在request中,便于之后注入

request.setAttribute("tokenModel", tokenModel)

return true

}

//如果验证token失败,返回401错误

response.status = HttpServletResponse.SC_UNAUTHORIZED

return false

}

}

以上就是职坐标整理发布关于JAVA的介绍,先祝大家对它有了一定的了解吧,了解更多内容,请关注职坐标编程语言JAVA频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到登录鉴权微服务的Java代码时,可以使用一些常见的框架和技术来实现。下面是一个示例代码,展示了一个基本的登录鉴权微服务的实现: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class AuthMicroserviceApplication { public static void main(String[] args) { SpringApplication.run(AuthMicroserviceApplication.class, args); } @PostMapping("/login") public String login(@RequestBody LoginRequest request) { // 在此处执行登录鉴权逻辑,比如验证用户名和密码等 // 如果鉴权成功,可以返回一个生成的访问令牌(access token) // 如果鉴权失败,可以返回相应的错误信息 return "Access token"; } // 定义一个登录请求的数据模型 static class LoginRequest { private String username; private String password; // 省略构造函数、getter和setter方法 @Override public String toString() { return "LoginRequest{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } } } ``` 在这个示例中,我们使用了Spring Boot框架来构建微服务,并使用了Spring Web模块来处理HTTP请求。`@RestController`注解表示这是一个REST控制器,用于处理登录请求。`@PostMapping`注解指定了处理POST请求的方法,即`login()`方法。 `LoginRequest`类用于表示登录请求的数据模型,其中包含了用户名和密码。在`login()`方法中,我们可以执行实际的登录鉴权逻辑,并根据鉴权结果返回相应的访问令牌或错误信息。 请注意,这只是一个简单的示例,实际的登录鉴权逻辑可能更加复杂,比如使用密码加密、与用户数据库交互等。此外,还可能需要使用一些安全框架或库来增加登录鉴权的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值