Algorithm - 一种从properties中根据value找key的方法

Constraints:

 1. relation of key and value is one-to-one, and both unique.

 2. key and value is both String.

 

 

	public String getKey(String value) {
		if (ht == null)
			ht = new Hashtable<String, String>();
		if (Checker.isNotNull(entrySet())
				&& Checker.isNotNull(entrySet().iterator())) {
			Set<Map.Entry<Object, Object>> set = this.entrySet();
			Iterator<Map.Entry<Object, Object>> iter = set.iterator();
			while (iter.hasNext()) {
				Map.Entry<Object, Object> entry = iter.next();
				if (entry.getKey() instanceof String
						&& entry.getValue() instanceof String) {
					String k = (String) entry.getKey();
					String v = (String) entry.getValue();
					ht.put(v, k);
				}
			}
		}
		return ht.get(value);
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Spring Boot 集成 JWT 的教程: 1. 添加依赖 在 `pom.xml` 文件添加以下依赖: ```xml <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> </dependency> ``` 2. 配置 JWT 在 `application.properties` 文件添加以下属性: ``` # JWT jwt.secret=your_secret_key jwt.expiration=86400 ``` `jwt.secret` 是用来加密 JWT 的密钥,`jwt.expiration` 是 JWT 的过期时间(单位为秒)。 3. 创建 JWT 工具类 创建一个 JWT 工具类,实现生成和验证 JWT 的方法: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Date; import java.util.HashMap; import java.util.Map; @Component public class JwtUtils { @Value("${jwt.secret}") private String secret; @Value("${jwt.expiration}") private Long expiration; /** * 生成 JWT */ public String generateToken(String subject) { Map<String, Object> claims = new HashMap<>(); claims.put("sub", subject); Date now = new Date(); Date expirationDate = new Date(now.getTime() + expiration * 1000); return Jwts.builder() .setClaims(claims) .setIssuedAt(now) .setExpiration(expirationDate) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } /** * 验证 JWT */ public boolean validateToken(String token) { try { Jwts.parser().setSigningKey(secret).parseClaimsJws(token); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 获取 JWT 的数据 */ public String getSubjectFromToken(String token) { Claims claims = Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); return claims.getSubject(); } } ``` 4. 创建登录接口 在 Spring Boot 创建一个登录接口,用来验证用户名和密码,并生成 JWT: ```java @RestController @RequestMapping("/auth") public class AuthController { @Autowired private JwtUtils jwtUtils; @PostMapping("/login") public ResponseEntity<?> login(@RequestBody User user) { // 验证用户名和密码 if (user.getUsername().equals("admin") && user.getPassword().equals("admin")) { // 生成 JWT String token = jwtUtils.generateToken(user.getUsername()); return ResponseEntity.ok(new AuthResponse(token)); } else { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } } } ``` 5. 创建需要身份验证的接口 在 Spring Boot 创建一个需要身份验证的接口,只有在 JWT 有效的情况下才能访问: ```java @RestController @RequestMapping("/api") public class ApiController { @Autowired private JwtUtils jwtUtils; @GetMapping("/user") public ResponseEntity<?> getUserInfo(@RequestHeader("Authorization") String authorization) { // 获取 JWT String token = authorization.substring(7); // 验证 JWT if (jwtUtils.validateToken(token)) { // 获取 JWT 的数据 String username = jwtUtils.getSubjectFromToken(token); User user = new User(username, "******"); return ResponseEntity.ok(user); } else { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } } } ``` 6. 测试 启动 Spring Boot 应用,使用 Postman 或者其他工具访问登录接口 `/auth/login`,传入用户名和密码,成功后会返回一个 JWT,例如: ``` { "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYxMDY5NjAyMiwiZXhwIjoxNjEwNzAzMjIyfQ.0kOezsPNNxXW3Lj5p2R1j8Mjv5bY1aKtV4xxeXnTJG3Rt1NlCj6nJUc8yfIjJp5uKbmkR-fVU4P4nQD7GMJfpg" } ``` 然后访问需要身份验证的接口 `/api/user`,在请求头添加 `Authorization: Bearer your_jwt_token`,例如: ``` Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYxMDY5NjAyMiwiZXhwIjoxNjEwNzAzMjIyfQ.0kOezsPNNxXW3Lj5p2R1j8Mjv5bY1aKtV4xxeXnTJG3Rt1NlCj6nJUc8yfIjJp5uKbmkR-fVU4P4nQD7GMJfpg ``` 如果 JWT 有效,则会返回用户信息: ``` { "username": "admin", "password": "******" } ``` 如果 JWT 无效,则会返回 `401 Unauthorized`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值