2014-09-30 2 views
1

Когда пользователь не вошел в систему и он ввел правильный URL-адрес для страницы входа в систему, он переходит на страницу входа в систему, иначе, когда пользователь вводит другой URL-адрес, он будет перенаправлен на страницу с ошибкой вместо перенаправления на страница авторизации. как это исправить?Переадресовать пользователей на страницу входа в систему, если они не вошли в систему.

+1

Что (если таковой имеется) плагин безопасности вы используете и как вы его настроены? –

+0

У меня есть плагин весны безопасности в приложении. И каждый раз он перенаправляет меня на страницу входа. –

+0

Как насчет второй части моего вопроса - как вы ее настроили? [Документация] (http://grails-plugins.github.io/grails-spring-security-core/guide/requestMappings.html) предполагает, что по умолчанию все, что вы специально не открыли, будет запрещено. –

ответ

0

Вы должны использовать аннотацию @Secure в своем контроллере. Это приведет к перенаправлению пользователя на страницу входа в систему, если это не разрешено. Этот код:

@Secured(AuthenticatedVoter.IS_AUTHENTICATED_FULLY) 
class CustomerController{ 
    .... 
} 

будет перенаправлять всех, как попытаться открыть вид клиента страницы, если они не вошли в систему, они будут перенаправлены на страницу входа в систему при попытке доступа к этой странице.. Хотя это просто простая проверка подлинности, и обычно вам нужно делать больше, чем это, но она будет делать то, что вы хотите.

0

Для вашего первого вопроса, то ответ выше это хорошо, но если вы хотите ограничить более specfically, вы можете использовать это слишком

Сначала вы должны установить плагин Grails Spring Security

class UserController { 

    // allow to access everyone 
    def index() { 
    } 

    @Secured([UserRole.ROLE_USER,UserRole.ROLE_ADMIN,...]) 
    def account() { 
    } 
} 

Примечание, если вы даете @Secured в верхней части класса, ограничит весь класс от доступа

Для вашего второго вопроса, то вы используете UrlMapping, например

"404"(controller:"yourController", action:"yourErrorPageAction")