GWT и Spring Security Integration - PullRequest
       1

GWT и Spring Security Integration

1 голос
/ 26 декабря 2011

При моем правильном входе в приложение GWT я использую внутренний XMPP-сервер для аутентификации комбинации Имя пользователя-Пароль с сервера, а ответом является идентификатор соединения, отправляемый обратно через механизм входа в систему RPC.

Однако я создал новую базу данных «Пользователь» (которая используется совместно с сервером XMPP), в которой хранится информация о пользователе и используется как часть для аутентификации имени пользователя и пароля с помощью Spring Security;

Кто-нибудь может поделиться фрагментом кода для GWT + Spring Security, кодами входа / выхода?

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Я использую код из этой статьи: http://www.javacodegeeks.com/2010/12/securing-gwt-apps-with-spring-security.html

По сути, вы реализуете интерфейс Spring

org.springframework.security.authentication.AuthenticationProvider

, который имеет authenticate (Authentication) метод.Вы получаете имя пользователя и пароль, введенные пользователем в этом методе с помощью:

String username = (String) authentication.getPrincipal();
String password = (String) authentication.getCredentials();
// now try to get the user from your DB
User user = db.getUser(username, password);

, а в контексте Spring вы настраиваете фильтр безопасности Spring (см. Ссылку) и объявляете свой AuthenticationProvider:

<bean id="authProvider" class="com.example.security.MyAuthenticationProvider" />

<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider ref="authProvider" />
</security:authentication-manager>

Я вообще не использую GWT для входа в систему ... просто обычная страница JSP .... вы можете увидеть пример страницы входа в систему JSP (и ссылку выхода из системы) здесь Когда пользователь входит в систему, загружается приложение GWT.Чтобы выйти, просто сделайте что-то вроде:

RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "/j_spring_security_logout");
try {
    rb.sendRequest(null, new RequestCallback() {
        public void onResponseReceived(Request request, Response response) {
            GWT.log("Logged user out: " + response.getStatusText());
        }
        public void onError(Request request, Throwable caught) {
            // try to recover somehow
        }
    });
} catch (RequestException re) {
    someOtherLogoutMechanism();
}
0 голосов
/ 27 декабря 2011

Мои конфигурации следующие. Я использую приложение GWT

в моем JSP

<form name="login" action="<c:url value="j_spring_security_check"/>" method="POST">

в моем web.xml

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

в моем welcome.jsp

<sec:authorize ifAnyGranted="<%=gRoles%>">      
  <meta http-equiv="REFRESH" content="0;  url=demoApp/demoApp.jsp">
</sec:authorize>

весна-security.xml

    <http auto-config="false" access-denied-page="/login.jsp?error=Access%20Denied">
    <intercept-url pattern="/login.jsp*" filters="none" />
    <intercept-url pattern="/demoApp/**" access="${app.roles}" />

    <form-login login-page="/login.jsp"
                default-target-url="/welcome.jsp" 
                always-use-default-target="true" 
                authentication-failure-url="/login.jsp?error=true" />
    <logout logout-success-url="/login.jsp"/>   
    <anonymous/>

Обратите внимание, что здесь я использую пример безопасности на основе форм. Вы можете использовать security: jdbc-user-service для подключения к БД для аутентификации.

см. Образец здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...