переопределить неавторизованную страницу - PullRequest
1 голос
/ 26 октября 2011

Мне нужно знать, как переопределить неавторизованную страницу.то есть, когда у пользователя нет каких-либо разрешений для защищенного URL-адреса, верните страницу 401. Как мы можем перенаправить пользователя на предварительно определенную неавторизованную страницу?

Спасибо ...

Ответы [ 3 ]

3 голосов
/ 02 апреля 2014

Я нашел только один способ, как изменить перенаправление на login.jsp для ответа с 401.

Вы должны создать свой собственный фильтр, который будет расширять org.apache.shiro.web.filter.authc.FormAuthenticationFilter и переопределите метод saveRequestAndRedirectToLogin ().

public class SecurityAuthenticationFilter extends FormAuthenticationFilter {

    @Override
    protected void saveRequestAndRedirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
        saveRequest(request);
        sendChallenge(response);
    }

    protected void sendChallenge(ServletResponse response) {
        HttpServletResponse httpResponse = WebUtils.toHttp(response);
        httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    }

}

Я использую интеграцию Guice + Shiro.Итак, этот фильтр добавляется так же, как в org.apache.shiro.guice.web.ShiroWebModule.

public class SecurityModule extends ShiroWebModule {

    public static final Key<SecurityAuthenticationFilter> AUTHC_REST = Key.get(SecurityAuthenticationFilter.class);

    ...

    @Override
    protected void configureShiroWeb() {
        ...

        // Add as filter
        addFilterChain("/rest/login", ANON);
        addFilterChain("/rest/**", AUTHC_REST);

        ...
    }
}

Для файла shiro.ini его следует добавить следующим образом:

[main]
authc = package.path.to.SecurityAuthenticationFilter

[urls]
/rest/login = anon
/rest/** = authc

Это должно работать:)

0 голосов
/ 19 января 2012

Не уверен, какой технологический стек вы используете, но в веб-приложении Java вы можете настроить это в файле web.xml в теге.

<error-page>
  <error-code>401</error-code>
  <location>{path to custom page}</location>
</error-page>
0 голосов
/ 25 ноября 2011

:) Мне нужно наоборот, я бы хотел получить 401 вместо перенаправления (302). Каковы ваши текущие настройки? Вы можете настроить это из shiro.ini файла?

...