9

私はJavaでコーディングを始めて13週間で、RESTfulWebサービスに取り組んでいます。バックエンドが完了し、現在UIの作成に取り組んでいます。要件の1つは、ユーザーがhttpBasicを使用してログインすることです。これは、ユーザーがページに移動するとポップアップダイアログが表示され、ハードコードされたユーザーを1人入力してログインできるように構成されています。しかし、実際に必要なのは、データベース。私は、データベースに対して検証するように構成する方法を見つけるために広範囲に検索しましたが、役に立ちませんでした。これが私のダミーユーザーのspring-security.xmlファイルです。

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <!-- <http auto-config="true"> <intercept-url pattern="/welcome*" access="ROLE_USER" 
        /> <form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/loginfailed" 
        /> <logout logout-success-url="/logout" /> </http> -->

    <http>
        <intercept-url pattern="/*" access="ROLE_USER" />
        <http-basic />
    </http>

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="tmain" password="123456" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

</beans:beans>

そして、これが私の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>

私が持っているダミーユーザーではなく、データベースに対して認証するようにSpringセキュリティを構成する方法を教えてもらえますか?データベースに、名、姓、電子メール、パスワード、activeStatus、およびタイムゾーンを持つユーザーエンティティがあります。メールはユーザーのユーザー名です。ありとあらゆる助けをいただければ幸いです。

4

2 に答える 2

3

認証プロバイダーは次のようになります。

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource" />
    </authentication-provider>
</authentication-manager>

デフォルトの実装には、次のテーブルが必要です。

create table users(
    username varchar_ignorecase(50) not null primary key,
    password varchar_ignorecase(50) not null,
    enabled boolean not null);

create table authorities (
    username varchar_ignorecase(50) not null,
    authority varchar_ignorecase(50) not null,
    constraint fk_authorities_users foreign key(username) references users(username));
    create unique index ix_auth_username on authorities (username,authority);

異なるデータベース構造を持ち、次のようなものを使用できます。

<jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select username,authority from users where username=?"/>

dataSourceBeanを作成することを忘れないでください...

そして、はい..これはすべてドキュメントにあります。

于 2012-05-31T16:11:04.847 に答える
1

jdbc-user-service代わりにa を使用する必要がありますuser-serviceドキュメントを読むことから始めることができます。

于 2012-05-31T15:56:32.420 に答える