Example usage for org.apache.shiro.web.util WebUtils getSavedRequest

List of usage examples for org.apache.shiro.web.util WebUtils getSavedRequest

Introduction

In this page you can find the example usage for org.apache.shiro.web.util WebUtils getSavedRequest.

Prototype

public static SavedRequest getSavedRequest(ServletRequest request) 

Source Link

Usage

From source file:org.workin.security.shiro.filter.authc.ShiroRedirectAuthenticationFilter.java

License:Apache License

@Override
public String getSavedRequestUrl(ServletRequest request) {
    String savedRequestUrl = null;
    SavedRequest savedRequest = WebUtils.getSavedRequest(request);

    if (savedRequest != null)
        // SavedRequest?URL
        savedRequestUrl = savedRequest.getRequestUrl();

    if (StringUtils.isBlank(savedRequestUrl))
        // ?URLrequest?redirectUrl??URL
        savedRequestUrl = request.getParameter(this.parameterName);

    if (StringUtils.isBlank(savedRequestUrl))
        // ?URL//from w  ww  .ja va 2  s  . c  o m
        savedRequestUrl = (StringUtils.isNotBlank(getSuccessUrl()) ? getSuccessUrl() : DEFAULT_SUCCESS_URL);

    if (savedRequest == null && savedRequestUrl.startsWith("/") && savedRequestUrl.length() > 1)
        // ?????URL??"/"?
        savedRequestUrl = StringUtils.afterFrist(savedRequestUrl, "/");

    return savedRequestUrl;
}

From source file:org.workin.security.shiro.ShiroWebUtils.java

License:Apache License

/**
 * @description ??URL?URL/*from w  w  w .ja  v  a 2  s .  co m*/
 * @author <a href="mailto:code727@gmail.com">?</a> 
 * @param request
 * @param fallbackUrl
 * @return
 */
public static String getSavedRequestUrl(ServletRequest request, String fallbackUrl) {
    String savedRequestUrl = null;
    SavedRequest savedRequest = WebUtils.getSavedRequest(request);

    if (savedRequest != null)
        // SavedRequest?URL
        savedRequestUrl = savedRequest.getRequestUrl();

    if (StringUtils.isBlank(savedRequestUrl))
        // ?URLrequest?redirectUrl??URL
        savedRequestUrl = request.getParameter("redirect");

    if (StringUtils.isBlank(savedRequestUrl))
        // ?URL
        savedRequestUrl = (StringUtils.isNotBlank(fallbackUrl) ? fallbackUrl
                : AuthenticationFilter.DEFAULT_SUCCESS_URL);

    if (savedRequest == null && savedRequestUrl.startsWith("/") && savedRequestUrl.length() > 1)
        // ?????URL??"/"?
        savedRequestUrl = StringUtils.afterFrist(savedRequestUrl, "/");

    return savedRequestUrl;
}

From source file:top.sj.web.UserLoginAction.java

License:Open Source License

/**
 * //from  w w  w .j  a v a 2  s.  c om
 */
@Override
public String execute() throws Exception {
    boolean TorF = false;
    SjUsers user = null;

    /**
     * ????
     */
    HttpServletRequest request = ServletActionContext.getRequest();
    String sessionId = request.getSession().getId();
    String captchaId = sessionId;

    String validateCode = checkedCode;

    // ???sessionid????
    boolean validateResult = JCaptchaBusinessUtil.getService().validateResponseForID(captchaId, validateCode);
    if (validateResult) {
        TorF = true;
    }

    if (TorF == true) {

        // ??????
        StringBuffer msg = new StringBuffer();

        // ???
        UsernamePasswordToken token = new UsernamePasswordToken(users.getUNickname(),
                DigestUtils.sha256Hex(users.getUPwd()));
        Subject subject = SecurityUtils.getSubject();
        try {
            // ?
            subject.login(token);

            // users??
            users.setUPwd(DigestUtils.sha256Hex(users.getUPwd()));
            // ????
            user = userService.doLoginService(users);

            // ?Session
            SessionScope.putUserInfoOnSessionScope(user);

            user.setULastlogontime(TimestampConverter.convertNowDateToStimeStamp());
            //?
            userService.updateUserInfoService(user);

            logger.info(" -- user login was successed at " + DateTimeTool.getNowDateFormatDateTimeTemplateOne()
                    + " -- ");

            /****************************** ??? ******************************/
            /**
             * 
             */
            if (null != refererUrl && refererUrl.contains("detail")) {
                redirectUrl = refererUrl;
                return ActionResult.SUCCESS.getType();
            }

            /**
             * ???
             */
            Object shiroRequest = WebUtils.getSavedRequest(request);
            String interceptBeforeUrl = null;
            if (null != shiroRequest) {
                try {
                    interceptBeforeUrl = WebUtils.getSavedRequest(request).getRequestURI();
                    logger.info(" -- interceptor before url is ?" + interceptBeforeUrl + " -- ");
                } catch (Exception e) {
                    e.printStackTrace();
                }

                if (interceptBeforeUrl.contains("manage")) {
                    redirectUrl = "/manage";
                    return ActionResult.SUCCESS.getType();
                }
            }

            /**
             * ??
             */
            if (null == shiroRequest && (refererUrl.contains("home") || refererUrl.contains("dologin"))) {
                redirectUrl = "/home";
                return ActionResult.SUCCESS.getType();
            }
            /****************************** ??? ******************************/

            // ???????
        } catch (IncorrectCredentialsException e) {
            logger.warn("?. Password for account " + token.getPrincipal() + " was incorrect.");
            msg.append(ShiroExceptionEnum.PASSWORDERROR.getType());
        } catch (ExcessiveAttemptsException e) {
            logger.warn("");
            msg.append(ShiroExceptionEnum.LOGINFAILEDMAXCOUNTS.getType());
        } catch (LockedAccountException e) {
            logger.warn(
                    "???. The account for username " + token.getPrincipal() + " was locked.");
            msg.append(ShiroExceptionEnum.ACCOUNTISLOCKED.getType());
        } catch (DisabledAccountException e) {
            logger.warn(
                    "???. The account for username " + token.getPrincipal() + " was disabled.");
            msg.append(ShiroExceptionEnum.ACCOUNTISDISABLED.getType());
            System.out.println(msg);
        } catch (ExpiredCredentialsException e) {
            logger.warn("??. the account for username " + token.getPrincipal() + "  was expired.");
            msg.append(ShiroExceptionEnum.ACCOUNTEXPIRED.getType());
        } catch (UnknownAccountException e) {
            logger.warn("???. There is no user with username of " + token.getPrincipal());
            msg.append(ShiroExceptionEnum.ACCOUNTNOTEXISTS.getType());
        } catch (UnauthorizedException e) {
            logger.warn("??You do not have authorization from the appropriate.");
            msg.append(ShiroExceptionEnum.ACCOUNTUNAUTHORIZED.getType());
        } finally {
            if (null != msg) {
                // ?request
                request.setAttribute("message", msg.toString());
            }
        }
    } else {
        // ?request
        request.setAttribute("message", "???");
    }

    logger.error(" -- user login was failed at " + DateTimeTool.getNowDateFormatDateTimeTemplateOne() + " -- ");

    // ??
    return ActionResult.FAILED.getType();
}