Влизане с различна форма в Shiro

Същият въпрос беше зададен под „URL адрес за множество влизания в Shiro“, но беше без отговор.

Опитвам се да имам две различни страници за вход за apache shiro 1) За мобилни устройства (малък екран, ограничен javascript различна тема) 2) За стандартни устройства

Как мога да направя?

Сега само един url работи в даден момент.

shiro.loginUrl = ...

Благодаря ти


person Med-Salah OKA    schedule 23.03.2013    source източник


Отговори (1)


Трябва да разширите FormAuthenticationFilter, за да сте наясно с множество URL адреси за влизане. Може да изглежда така:

public class CustomAuthenticationFilter extends FormAuthenticationFilter {
    private Map<String, String> loginUrlByUserAgent = new HashMap<String, String>();

    public void setLoginUrls(final Map<String, String> loginUrlByUserAgent) {
        this.loginUrlByUserAgent = loginUrlByUserAgent;
    }

    protected void redirectToLogin(final ServletRequest request, final ServletResponse response) throws IOException {
        final String loginUrl = getLoginUrl(request);
        WebUtils.issueRedirect(request, response, loginUrl);
    }

    private String getLoginUrl(final ServletRequest request) {
        // check user agent
        final String userAgent = getUserAgent(request);
        // and return appropriate login url
        return userAgent != null && loginUrlByUserAgent.containsKey(userAgent) ?
                loginUrlByUserAgent.get(userAgent) :
                getLoginUrl();
    }

    private String getUserAgent(final ServletRequest request) {
        // get "User-Agent" header
    }
}

След това просто трябва да замените филтъра authc с вашия новосъздаден.

person sody    schedule 02.04.2013