在maven中绕过java登录
当前正在使用开源项目() 当我构建应用程序时,它如下所示: 问题是,API站在他们这边(在maven中绕过java登录,java,maven,Java,Maven,当前正在使用开源项目() 当我构建应用程序时,它如下所示: 问题是,API站在他们这边(publicstaticfinalstringAPI\uURL=”https://api.somesite.com/user“;) 他们的API下降了。因此,我无法在他们的网站上注册,以通过登录过程。 有没有办法绕过登录? 在下面提供LoginController类代码 public class LoginController extends Controller<LoginView> { pu
publicstaticfinalstringAPI\uURL=”https://api.somesite.com/user“;
)
他们的API下降了。因此,我无法在他们的网站上注册,以通过登录过程。
有没有办法绕过登录?
在下面提供LoginController类代码
public class LoginController extends Controller<LoginView> {
public static final String API_URL = "";
private final Logger logger = Logger.getLogger(LoginController.class);
private LoginView view;
public LoginController() {
ControllerManager.add(LoginController.class, this);
}
public void show() {
try {
if (Session.get().getApiToken() != null) {
logger.info("Existing API token found - trying to retrieve account info...");
if (loadAccount(Session.get().getApiToken(), true, Session.get().getEmail().getValue())) {
logger.info("Logged in with pre-existing key.");
return;
}
}
} catch (Exception e) {
logger.error("Failed to authenticate.", e);
}
Toolkit toolkit = Toolkit.getDefaultToolkit();
int centerX = (toolkit.getScreenSize().width / 2) - (getComponent().getWidth() / 2);
int centerY = (toolkit.getScreenSize().height / 2) - (getComponent().getHeight() / 2);
getComponent().setLocation(centerX, centerY);
getComponent().setIconImage(Application.ICON_IMAGE);
getComponent().setVisible(true);
}
public void login(String email, String password, boolean rememberMe) {
try {
SwingWorker worker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
HttpResponse response = Executor.newInstance(HttpUtil.getClient()).execute(Request.Post(API_URL + "/token")
.bodyString(JacksonUtil.serialize(new CreateTokenRequest(email, password)), ContentType.APPLICATION_JSON)).returnResponse();
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
UserToken tokenResponse = JacksonUtil.deserialize(
EntityUtils.toString(response.getEntity()),
UserToken.class);
if (loadAccount(tokenResponse.getUuid(), rememberMe, email)) {
logger.info("Logged in.");
return null;
}
}
logger.error("Invalid login, response: [" + response.toString() + "]");
getComponent().getStatusLbl().setText("Status: Invalid login");
return null;
}
};
worker.execute();
} catch (Exception e) {
logger.error("Oops.", e);
getComponent().getStatusLbl().setText("Status: Error logging in");
}
}
private boolean loadAccount(String uuid, boolean rememberMe, String email) throws IOException {
HttpResponse getAccountResponse = Executor.newInstance(HttpUtil.getClient()).execute(Request.Get(API_URL)
.addHeader("Authorization", "Bearer " + uuid)).returnResponse();
if (getAccountResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
logger.info("Processed login [" + getAccountResponse.toString() + "]");
UserAccount account = JacksonUtil.deserialize(
EntityUtils.toString(getAccountResponse.getEntity()),
UserAccount.class);
if (account != null && account.getStatus() == UserAccount.Status.ACTIVE &&
account.getType() != null) {
getComponent().getStatusLbl().setText("Status: Logged in");
getComponent().dispose();
Session.get().setUserAccount(account);
Session.get().setApiToken(uuid);
Property emailProperty = Session.get().getEmail();
Property apiKeyProperty = Session.get().getApiKey();
if (rememberMe) {
if (emailProperty == null) {
emailProperty = new Property(Session.EMAIL_PROPERTY_KEY, email);
emailProperty.save();
} else {
emailProperty.setValue(email);
emailProperty.save();
}
if (apiKeyProperty == null) {
apiKeyProperty = new Property(Session.API_KEY_PROPERTY_KEY, uuid);
apiKeyProperty.save();
} else {
apiKeyProperty.setValue(uuid);
apiKeyProperty.save();
}
} else {
if (emailProperty != null) {
emailProperty.remove();
}
if (apiKeyProperty != null) {
apiKeyProperty.remove();
}
}
Session.get().onAuthenticated();
ControllerManager.get(MainController.class).show();
return true;
} else {
getComponent().getStatusLbl().setText("Status: Only BETA users can login");
return false;
}
}
return false;
}
@Override
public LoginView getComponent() {
if (view == null) {
view = new LoginView(this);
}
return view;
}
公共类LoginController扩展控制器{
公共静态最终字符串API_URL=“”;
私有最终记录器=Logger.getLogger(LoginController.class);
私人登录视图;
公共登录控制器(){
添加(LoginController.class,this);
}
公开展览({
试一试{
if(Session.get().getApiToken()!=null){
info(“找到现有API令牌-尝试检索帐户信息…”);
if(loadAccount(Session.get().getApiToken(),true,Session.get().getEmail().getValue())){
info(“使用预先存在的密钥登录”);
返回;
}
}
}捕获(例外e){
logger.error(“验证失败”,e);
}
Toolkit=Toolkit.getDefaultToolkit();
int centerX=(toolkit.getScreenSize().width/2)-(getComponent().getWidth()/2);
int centerY=(toolkit.getScreenSize().height/2)-(getComponent().getHeight()/2);
getComponent().setLocation(centerX、centerY);
getComponent().setIconImage(Application.ICON\u IMAGE);
getComponent().setVisible(true);
}
公共无效登录(字符串电子邮件、字符串密码、布尔记忆){
试一试{
SwingWorker worker=新SwingWorker(){
@凌驾
受保护对象doInBackground()引发异常{
HttpResponse response=Executor.newInstance(HttpUtil.getClient()).execute(Request.Post(API_URL+“/token”)
.bodyString(JacksonUtil.serialize(新的CreateTokenRequest(电子邮件、密码)),ContentType.APPLICATION_JSON)).returnResponse();
if(response.getStatusLine().getStatusCode()==HttpStatus.SC\u OK){
UserToken tokenResponse=JacksonUtil.deserialize(
EntityUtils.toString(response.getEntity()),
UserToken.class);
if(loadAccount(tokenResponse.getUuid(),记住,电子邮件)){
logger.info(“登录”);
返回null;
}
}
logger.error(“无效登录,响应:[“+response.toString()+”]”);
getComponent().getStatusLbl().setText(“状态:无效登录”);
返回null;
}
};
worker.execute();
}捕获(例外e){
logger.error(“Oops.”,e);
getComponent().getStatusLbl().setText(“状态:登录时出错”);
}
}
私有布尔loadAccount(字符串uuid、布尔记忆、字符串电子邮件)引发IOException{
HttpResponse getAccountResponse=Executor.newInstance(HttpUtil.getClient()).execute(Request.Get(API_URL)
.addHeader(“授权”、“承载人”+uuid)).returnResponse();
if(getAccountResponse.getStatusLine().getStatusCode()==HttpStatus.SC\u OK){
logger.info(“已处理的登录名[“+getAccountResponse.toString()+”]);
UserAccount=JacksonUtil.deserialize(
EntityUtils.toString(getAccountResponse.getEntity()),
UserAccount.class);
if(account!=null&&account.getStatus()==UserAccount.Status.ACTIVE&&
account.getType()!=null){
getComponent().getStatusLbl().setText(“状态:已登录”);
getComponent().dispose();
Session.get().setUserAccount(account);
Session.get().setApiToken(uuid);
属性emailProperty=Session.get().getEmail();
属性apiKeyProperty=Session.get().getApiKey();
如果(记住){
if(emailProperty==null){
emailProperty=新属性(Session.EMAIL\u Property\u KEY,EMAIL);
emailProperty.save();
}否则{
emailProperty.setValue(电子邮件);
emailProperty.save();
}
if(apiKeyProperty==null){
apiKeyProperty=新属性(Session.API\u KEY\u Property\u KEY,uuid);
apiKeyProperty.save();
}否则{
apiKeyProperty.setValue(uuid);
apiKeyProperty.save();
}
}否则{
if(emailProperty!=null){
emailProperty.remove();
}
if(apiKeyProperty!=null){
apiKeyProperty.remove();
}
}
Session.get().onAuthenticated();
get(MainController.class).show();
返回true;
}否则{
getComponent().getStatusLbl().setText(“状态:只有测试版用户才能登录”);
返回false;
}
}
返回false;
}
@凌驾
public LoginView getComponent(){
如果(视图==null){
视图=新登录视图(此);
}
返回视图;
}
看起来您的login
和loadAccount
方法正在使用调用HttpUtil.getClient()
方法得到的HttpResponse
。因此,您可以尝试模拟从HttpUtil.getClient()
返回的客户端,以便它将返回假数据。尝试查看@D.B谢谢,这很有效!