powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security - JdbcUserDetailsManager
9 сообщений из 9, страница 1 из 1
Spring Security - JdbcUserDetailsManager
    #36890731
xrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Назрела необходимость сделать авторизацию пользователей через spring security.
Собственно саму авторизацию я сделал. Примерно так:
web.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/applicationContext.xml
            /WEB-INF/applicationContext-security.xml
        </param-value>
	</context-param>
	
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet- class >org.springframework.web.servlet.DispatcherServlet</servlet- class >
		<load-on-startup> 1 </load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*. do </url-pattern>
	</servlet-mapping>

	<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>
		
	<listener>
		<listener- class >org.springframework.web.context.ContextLoaderListener</listener- class >
	</listener>
	<listener>
        <listener- class >org.springframework.web.util.Log4jConfigListener</listener- class >
    </listener>
	<context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>

	<welcome-file-list>
		<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
	</welcome-file-list>
</web-app> 

applicationContext-security.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?xml version="1.0" encoding="UTF-8"?>
<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"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
		http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

	<http auto-config="true">
		<intercept-url pattern="/*" access="ROLE_USER" />
		<intercept-url pattern="/login.do" filters="none" />
		<form-login login-page="/login.do" />
	</http>



	<authentication-manager alias="authenticationManager">
		<authentication-provider>			
			<password-encoder hash="sha"/>
			<jdbc-user-service data-source-ref="dataSource" /> 
		</authentication-provider>
	</authentication-manager>
	
	<beans:bean id="dataSource"  class ="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<beans:property name="url" value="jdbc:mysql://localhost:3306/db" />
		<beans:property name="username" value="root" />
		<beans:property name="password" value="pass" />
	</beans:bean>
	
	<beans:bean id="userDetailsService"
		 class ="org.springframework.security.provisioning.JdbcUserDetailsManager">
		<beans:property name="dataSource" ref="dataSource" />
		<beans:property name="authenticationManager" ref="authenticationManager" />
		<beans:property name="enableAuthorities" value="true"/>
	</beans:bean>
	
	<beans:bean  class ="org.springframework.security.authentication.encoding.ShaPasswordEncoder" id="passwordEncoder"/>
	
</beans:beans>

dispatcher-servlet.xml (конфиг для DispatcherServelt)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8"?>

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

	<bean id="viewResolver"
		 class ="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

	<context:component-scan base- package ="my.test.auth" />
</beans>

login.jsp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<h1 align="center">Авторизация</h1>

<h3>Введите Ваш логин</h3>

<form action="j_spring_security_check" method="post">
	<label	 for ="j_username">Имя пользователя</label>: 
	<input id="j_username" name="j_username" size="20" maxlength="50" type="text" /> 
	<br />
	<label  for ="j_password">пароль </label>: 
	<input id="j_password" 	name="j_password" size="20" maxlength="50" type="password" /> 
	<br />
	<input type="submit" value="Login" />
</form>

loginController
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 package  my.test.auth;

 import  org.springframework.stereotype.Controller;
 import  org.springframework.web.bind.annotation.RequestMapping;
 import  org.springframework.web.bind.annotation.RequestMethod;

 import  ru.xnull.web.BaseController;

@Controller
 public   class  LoginLogoutController{
	@RequestMapping(method = RequestMethod.GET, value = "/login.do")
	 public   void  home() {
		.....
	}
}

И вот теперь не знаю что дальше делать. Вроде как надо начать использовать org.springframework.security.provisioning.JdbcUserDetailsManager - этот класс реализует из кообки работу с пользователями (не только создание). Но ума не приложу где что должно находиться.
Народ просветите меня срочно плиз.
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #36890734
xrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое главное забыл :)
Мне нужно реализовать регистрацию пользователей, то есть создание этих самых пользователей. Я знаю что для этого мне нужно использовать org.springframework.security.provisioning.JdbcUserDetailsManager, но чё с ним делать я не знаю, и нужно как-то создать страничку регистрации и привязать её к этому классу. Спрашивется как это всё сделать?
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #36890791
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xrwСпрашивется как это всё сделать?
что конкретно не ясно? структура таблиц?
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #36890801
xrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы я взял стандартные, просто было непонятно как пользоваться классом JdbcUserDetailsManager, для регистрации новых пользователей. Я полагал, что для этого класса существует какая-то стандартная jsp страница (так же как есть стандартная страница логина, которую spring предоставляет) которая будет проводить регистрацию пользователей используя класс JdbcUserDetailsManager.
Я попробовал использовать этот класс, и у меня получилось создать пользователя.
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 package  my.test;

 import  java.util.HashSet;
 import  java.util.Set;

 import  org.springframework.beans.factory.annotation.Autowired;
 import  org.springframework.security.authentication.encoding.PasswordEncoder;
 import  org.springframework.security.core.GrantedAuthority;
 import  org.springframework.security.core.userdetails.User;
 import  org.springframework.security.core.userdetails.UserDetails;
 import  org.springframework.security.provisioning.UserDetailsManager;
 import  org.springframework.stereotype.Controller;
 import  org.springframework.web.bind.annotation.RequestMapping;
 import  org.springframework.web.bind.annotation.RequestMethod;


@Controller
 public   class  RegisterUserController{
	@Autowired
	 private  UserDetailsManager userDetailsService;
	@Autowired
	 private  PasswordEncoder passwordEncoder;

	@RequestMapping(method = RequestMethod.GET, value = "/register.do")
	 public   void  home() {
		GrantedAuthority auth =  new  GrantedAuthority() {
			 private   static   final   long  serialVersionUID = 1L;

			 public  String getAuthority() {
				 return  "ROLE_USER";
			}
		};
		Set<GrantedAuthority> set =  new  HashSet<GrantedAuthority>();
		set.add(auth);
		
		UserDetails details =  new  User("root",  passwordEncoder.encodePassword("root",  new  Object()), true, true, true, true, set);
		userDetailsService.createUser(details);
	}
}

Вопрос решился вроде как.
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #37144588
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xrw,

спасибо. воспользовался твоим кодом как примером. намного ускорило понимание как это сделать =)))
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #37283316
issatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xrw,

Вопрос. String security используется только при авторизации в веб приложениях или также можно использовать для Netbeans (java), для подключения окна входа к базе данных? Спасибо.
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #37286547
xrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теоретически во всех :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Spring Security - JdbcUserDetailsManager
    #39287797
Alexis220382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую

Если бы еще sql скрипт для таблички выложил, то вообще супер было бы))

Спасибо.
...
Рейтинг: 0 / 0
Spring Security - JdbcUserDetailsManager
    #39287802
Alexis220382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение найдено, Гугл рулит и разруливает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DROP TABLE IF EXISTS `users`;

CREATE TABLE IF NOT EXISTS `users` (
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `enabled` BOOLEAN NOT NULL ,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `authorities`;

CREATE TABLE IF NOT EXISTS `authorities`(
  `username` varchar(255) NOT NULL,
  `authority` varchar(255) NOT NULL,
  CONSTRAINT `fk_authorities_users`
  FOREIGN KEY(`username`) REFERENCES users(username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE UNIQUE INDEX ix_auth_username ON authorities(username, authority) ;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security - JdbcUserDetailsManager
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]