Commit de3f4231 by Nepxion

提交简单的登录认证功能

parent b48a7f2e
package com.nepxion.discovery.common.entity;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class UserEntity {
private String userId;
private String password;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object object) {
return EqualsBuilder.reflectionEquals(this, object);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}
\ No newline at end of file
...@@ -19,6 +19,9 @@ public class ConsoleLauncher { ...@@ -19,6 +19,9 @@ public class ConsoleLauncher {
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {
ConsoleLogin consoleLogin = new ConsoleLogin();
consoleLogin.launch();
ConsoleFrame consoleFrame = new ConsoleFrame(); ConsoleFrame consoleFrame = new ConsoleFrame();
consoleFrame.launch(); consoleFrame.launch();
} }
......
package com.nepxion.discovery.console.desktop;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.Frame;
import java.util.Locale;
import com.nepxion.discovery.common.entity.UserEntity;
import com.nepxion.discovery.console.desktop.controller.ServiceController;
import com.nepxion.swing.dialog.JLoginDialog;
public class ConsoleLogin extends JLoginDialog {
private static final long serialVersionUID = 1L;
public ConsoleLogin() {
super(null);
}
public ConsoleLogin(Frame parent) {
super(parent);
}
@Override
public boolean login(String userId, String password, Locale locale) throws Exception {
UserEntity userEntity = new UserEntity();
userEntity.setUserId(userId);
userEntity.setPassword(password);
return ServiceController.authenticate(userEntity);
}
public void launch() {
setVisible(true);
toFront();
}
}
\ No newline at end of file
...@@ -23,6 +23,7 @@ import com.nepxion.discovery.common.constant.DiscoveryConstant; ...@@ -23,6 +23,7 @@ import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.entity.InstanceEntityWrapper; import com.nepxion.discovery.common.entity.InstanceEntityWrapper;
import com.nepxion.discovery.common.entity.ResultEntity; import com.nepxion.discovery.common.entity.ResultEntity;
import com.nepxion.discovery.common.entity.RouterEntity; import com.nepxion.discovery.common.entity.RouterEntity;
import com.nepxion.discovery.common.entity.UserEntity;
import com.nepxion.discovery.common.handler.RestErrorHandler; import com.nepxion.discovery.common.handler.RestErrorHandler;
import com.nepxion.discovery.common.util.RestUtil; import com.nepxion.discovery.common.util.RestUtil;
import com.nepxion.discovery.common.util.UrlUtil; import com.nepxion.discovery.common.util.UrlUtil;
...@@ -37,6 +38,14 @@ public class ServiceController { ...@@ -37,6 +38,14 @@ public class ServiceController {
restTemplate.setErrorHandler(new RestErrorHandler()); restTemplate.setErrorHandler(new RestErrorHandler());
} }
public static boolean authenticate(UserEntity userEntity) {
String url = getUrl() + "console/authenticate";
String result = restTemplate.postForEntity(url, userEntity, String.class).getBody();
return Boolean.valueOf(result);
}
public static String getDiscoveryType() { public static String getDiscoveryType() {
String url = getUrl() + "console/discovery-type"; String url = getUrl() + "console/discovery-type";
......
package com.nepxion.discovery.console.authentication;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import com.nepxion.discovery.common.entity.UserEntity;
public interface AuthenticationResource {
boolean authenticate(UserEntity userEntity) throws Exception;
}
\ No newline at end of file
package com.nepxion.discovery.console.authentication;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import com.nepxion.discovery.common.entity.UserEntity;
public class AuthenticationResourceImpl implements AuthenticationResource {
@Autowired
private Environment environment;
@Override
public boolean authenticate(UserEntity userEntity) throws Exception {
String userId = userEntity.getUserId().trim();
String password = userEntity.getPassword().trim();
String passwordValue = environment.getProperty(userId);
if (StringUtils.isNotEmpty(passwordValue)) {
return StringUtils.equals(password, passwordValue);
} else {
throw new IllegalArgumentException("Not exists for [" + userId + "]");
}
}
}
\ No newline at end of file
...@@ -11,6 +11,7 @@ package com.nepxion.discovery.console.configuration; ...@@ -11,6 +11,7 @@ package com.nepxion.discovery.console.configuration;
import org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint; import org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -18,6 +19,8 @@ import org.springframework.web.client.RestTemplate; ...@@ -18,6 +19,8 @@ import org.springframework.web.client.RestTemplate;
import com.nepxion.discovery.common.constant.DiscoveryConstant; import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.handler.RestErrorHandler; import com.nepxion.discovery.common.handler.RestErrorHandler;
import com.nepxion.discovery.console.authentication.AuthenticationResource;
import com.nepxion.discovery.console.authentication.AuthenticationResourceImpl;
import com.nepxion.discovery.console.endpoint.ConsoleEndpoint; import com.nepxion.discovery.console.endpoint.ConsoleEndpoint;
@Configuration @Configuration
...@@ -51,5 +54,11 @@ public class ConsoleAutoConfiguration { ...@@ -51,5 +54,11 @@ public class ConsoleAutoConfiguration {
return restTemplate; return restTemplate;
} }
@Bean
@ConditionalOnMissingBean
public AuthenticationResource authenticationResource() {
return new AuthenticationResourceImpl();
}
} }
} }
\ No newline at end of file
...@@ -42,7 +42,9 @@ import org.springframework.web.client.RestTemplate; ...@@ -42,7 +42,9 @@ import org.springframework.web.client.RestTemplate;
import com.nepxion.discovery.common.constant.DiscoveryConstant; import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.entity.InstanceEntity; import com.nepxion.discovery.common.entity.InstanceEntity;
import com.nepxion.discovery.common.entity.InstanceEntityWrapper; import com.nepxion.discovery.common.entity.InstanceEntityWrapper;
import com.nepxion.discovery.common.entity.UserEntity;
import com.nepxion.discovery.console.adapter.ConfigAdapter; import com.nepxion.discovery.console.adapter.ConfigAdapter;
import com.nepxion.discovery.console.authentication.AuthenticationResource;
import com.nepxion.discovery.console.rest.ConfigClearRestInvoker; import com.nepxion.discovery.console.rest.ConfigClearRestInvoker;
import com.nepxion.discovery.console.rest.ConfigUpdateRestInvoker; import com.nepxion.discovery.console.rest.ConfigUpdateRestInvoker;
import com.nepxion.discovery.console.rest.VersionClearRestInvoker; import com.nepxion.discovery.console.rest.VersionClearRestInvoker;
...@@ -67,8 +69,19 @@ public class ConsoleEndpoint { ...@@ -67,8 +69,19 @@ public class ConsoleEndpoint {
@Autowired @Autowired
private RestTemplate consoleRestTemplate; private RestTemplate consoleRestTemplate;
@Autowired
private AuthenticationResource authenticationResource;
@RequestMapping(path = "/authenticate", method = RequestMethod.POST)
@ApiOperation(value = "登录认证", notes = "", response = ResponseEntity.class, httpMethod = "POST")
@ResponseBody
@ManagedOperation
public ResponseEntity<?> authenticate(@RequestBody @ApiParam(value = "UserEntity实例", required = true) UserEntity userEntity) {
return executeAuthenticate(userEntity);
}
@RequestMapping(path = "/discovery-type", method = RequestMethod.GET) @RequestMapping(path = "/discovery-type", method = RequestMethod.GET)
@ApiOperation(value = "获取注册发现中心类型", notes = "", response = String.class, httpMethod = "GET") @ApiOperation(value = "获取注册发现中心类型", notes = "", response = ResponseEntity.class, httpMethod = "GET")
@ResponseBody @ResponseBody
@ManagedOperation @ManagedOperation
public ResponseEntity<?> discoveryType() { public ResponseEntity<?> discoveryType() {
...@@ -76,7 +89,7 @@ public class ConsoleEndpoint { ...@@ -76,7 +89,7 @@ public class ConsoleEndpoint {
} }
@RequestMapping(path = "/config-type", method = RequestMethod.GET) @RequestMapping(path = "/config-type", method = RequestMethod.GET)
@ApiOperation(value = "获取配置中心类型", notes = "", response = String.class, httpMethod = "GET") @ApiOperation(value = "获取配置中心类型", notes = "", response = ResponseEntity.class, httpMethod = "GET")
@ResponseBody @ResponseBody
@ManagedOperation @ManagedOperation
public ResponseEntity<?> configType() { public ResponseEntity<?> configType() {
...@@ -211,6 +224,16 @@ public class ConsoleEndpoint { ...@@ -211,6 +224,16 @@ public class ConsoleEndpoint {
return executeVersionClear(serviceId, version, false); return executeVersionClear(serviceId, version, false);
} }
private ResponseEntity<?> executeAuthenticate(UserEntity userEntity) {
try {
boolean result = authenticationResource.authenticate(userEntity);
return ResponseEntity.ok().body(result);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
private ResponseEntity<?> getDiscoveryType() { private ResponseEntity<?> getDiscoveryType() {
if (discoveryClient instanceof CompositeDiscoveryClient) { if (discoveryClient instanceof CompositeDiscoveryClient) {
CompositeDiscoveryClient compositeDiscoveryClient = (CompositeDiscoveryClient) discoveryClient; CompositeDiscoveryClient compositeDiscoveryClient = (CompositeDiscoveryClient) discoveryClient;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment