API客户端有用户名和密码。
在postman客户端中选择Basic Auth并输入用户名和密码。当向服务器邮递员发出请求时,将BASIC AUTH TOKEN发送给服务器。
现在在服务器端,我们只有一个包含用户名和密码的表。我们没有为客户维护任何角色,这就是为什么我们只有一个表。现在,如何使用BASIC AUTH TOKEN解析用户名和密码。并且一旦解决了如何将其与存储在DATABASE中的用户名和密码进行比较。
我是SPRING的初学者,很长时间都在努力实现这个目标。 请帮忙。
答案 0 :(得分:1)
您可以阅读此主题http://www.svlada.com/jwt-token-authentication-with-spring-boot/。 这非常有帮助。它基于jwt身份验证。
答案 1 :(得分:0)
尝试使用Spring安全性。这很容易和健壮。您可以通过创建WebSecurityConfigAdapter为应用程序启用http基本安全性。
https://docs.spring.io/spring- security/site/docs/current/reference/html/jc.html#jc-httpsecurity
如果您不想使用Spring Security,可以编写自定义实现。 Http Basic Auth令牌只是冒号分隔的base64编码形式的用户名和密码。例如,用户名和密码以base64编码形式的username:password发送。 所以你可以添加一个SecurityFilter,如下所示。
public class SecurityFilter implements Filter{
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
String auth = httpRequest.getHeader("Authorization");
if (auth != null && auth.startsWith("Basic")) {
String base64Auth = auth.substring("Basic".length()).trim();
String credentials = new String(Base64.getDecoder().decode(base64Auth),
Charset.forName("UTF-8"));
String[] usernamePassword = credentials.split(":",2);
// Query to database and do authentication here using username and password.
//if(successfull)
// chain.doFilter(req, resp);
//else
// return 401 error
}
}