/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openuap.cms.user.action.login;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.openuap.base.util.ControllerHelper;
import org.openuap.cms.user.action.UserBaseAction;
import org.openuap.cms.user.config.UserConfig;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
/**
* <p>
* 前台注销控制器
* </p>
*
* <p>
* $Id: LogoutAction.java 3992 2011-01-05 06:34:18Z orangeforjava $
* </p>
*
* @author Joseph
* @version 1.0
*/
public class LogoutAction extends UserBaseAction {
public ModelAndView perform(HttpServletRequest request,
HttpServletResponse response, ControllerHelper helper, Map model)
throws Exception {
String done = helper.getString("done", "");
//
done = java.net.URLDecoder.decode(done, "UTF-8");
while (done.startsWith("/")) {
done = done.substring(1);
}
//
UserConfig userConfig = UserConfig.getInstance();
String domain = userConfig.getPassportDomain();
String redirectUrl = null;
if (done.toLowerCase().startsWith("http://")
|| done.toLowerCase().startsWith("https://")) {
redirectUrl = java.net.URLEncoder.encode(done, "UTF-8");
} else {
redirectUrl = java.net.URLEncoder.encode(
helper.getBaseURL() + done, "UTF-8");
}
// System.out.println("redirectUrl="+redirectUrl);
try {
// 认证服务退出
getAuthService().logout(request, response, domain);
if (userConfig.isEnablePassport()) {
String logoutUrl = userConfig.getLogoutUrl();
// 同时要退出通行证
if (StringUtils.hasText(logoutUrl)) {
//
helper.sendRedirect(logoutUrl + redirectUrl);
}
}
} catch (Exception e) {
e.printStackTrace();
}
helper.sendRedirect(helper.getBaseURL()+done);
return null;
}
}