1.1.14.4.9. fejezet, Spring Security

applicationContext.xml-be elhelyezhetünk statikus jogosultság kezelést:

    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="prime" password="faces" authorities="ROLE_USER" />
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>

Ha adatbázisból szeretnénk kezelni a felhasználókat, egy egyszerű módja ennek a következő két SQL tábla, és az authentication-provider DataSource alapra helyezése:

CREATE TABLE IF NOT EXISTS `users` (
  `USER_ID` int(10) unsigned NOT NULL,
  `USERNAME` varchar(45) NOT NULL,
  `PASSWORD` varchar(45) NOT NULL,
  `ENABLED` tinyint(1) NOT NULL,
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `users` (`USER_ID`, `USERNAME`, `PASSWORD`, `ENABLED`) VALUES
(100, 'prime', 'faces', 1),
(110, 'username', 'passwd', 1);
 
CREATE TABLE IF NOT EXISTS `user_roles` (
  `USER_ROLE_ID` int(10) unsigned NOT NULL,
  `USER_ID` int(10) unsigned NOT NULL,
  `AUTHORITY` varchar(45) NOT NULL,
  PRIMARY KEY (`USER_ROLE_ID`),
  KEY `FK_user_roles` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `user_roles` (`USER_ROLE_ID`, `USER_ID`, `AUTHORITY`) VALUES
(1, 100, 'ROLE_USER'),
(2, 110, 'ROLE_USER');
 
ALTER TABLE `user_roles`
  ADD CONSTRAINT `FK_user_roles` FOREIGN KEY (`USER_ID`) REFERENCES `users` (`USER_ID`);

applicationContext.xml-ben:

    <security:http auto-config="true" security="none" pattern="/login.jsp"/>
 
    <security:http auto-config="true">
        <security:intercept-url pattern="/**" access="ROLE_USER" />
        <security:form-login login-page="/login.jsp" default-target-url="/index.html"
            always-use-default-target="false" authentication-failure-url="/login.jsp?authfailed=true"/>
        <security:logout logout-url="/logout" logout-success-url="/"/>
    </security:http>
 
    <security:authentication-manager>
       <security:authentication-provider>
        <security:jdbc-user-service data-source-ref="dataSource"
 
           users-by-username-query="
              select username,password, enabled 
              from users where username=?" 
 
           authorities-by-username-query="
              select u.username, ur.authority from users u, user_roles ur 
              where u.user_id = ur.user_id and u.username =?  " 
 
        />
       </security:authentication-provider>
    </security:authentication-manager>

Itt a always-use-default-target="false" értékadás lehetővé teszi, hogy a bejelentkezés után visszatérjen a böngésző az azonosítást megelőző oldalra, a helyett hogy egy előre meghatározott lapra kerülne a nézet.