spring http session

0
package forum.forum.dto;


import java.util.Set;

import javax.persistence.*;

@Entity
@Table(name="uzytkownik")
public class Uzytkownik {
	@Id
	@GeneratedValue
	private int id;
	private String login;
	private String haslo;
	@OneToMany(mappedBy="uzytkownik", fetch= FetchType.EAGER)
	private Set<Temat> tematy;
	@OneToMany(mappedBy="uzytkownik", fetch= FetchType.EAGER)
	private Set<Wpis> wpisy;
	private String rola;
	private Boolean enabled;
	public Boolean getEnabled() {
		return enabled;
	}
	public void setEnabled(Boolean enabled) {
		this.enabled = enabled;
	}
	public String getRola() {
		return rola;
	}
	public void setRola(String rola) {
		this.rola = rola;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getHaslo() {
		return haslo;
	}
	public void setHaslo(String haslo) {
		this.haslo = haslo;
	}
	public Set<Temat> getTematy() {
		return tematy;
	}
	public void setTematy(Set<Temat> tematy) {
		this.tematy = tematy;
	}
	public Set<Wpis> getWpisy() {
		return wpisy;
	}
	public void setWpisy(Set<Wpis> wpisy) {
		this.wpisy = wpisy;
	}
	
	
}

package forum.forum.controller;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import forum.forum.dao.IKategoria;
import forum.forum.dao.ITemat;

@Controller
public class PageController {
	
	@Autowired
	private IKategoria iKategoria;
	@Autowired
	private ITemat iTemat;

	@RequestMapping("/welcome")
	public ModelAndView index() {
		ModelAndView mv = new ModelAndView("page");
		mv.addObject("greeting", "welcome");
		return mv;
	}
	@RequestMapping(value = {"/login"})
	public ModelAndView login() {
		ModelAndView mv = new ModelAndView("login");
		return mv;
	}
	@RequestMapping(value = {"/", "/home", "/index"}, method=RequestMethod.GET)
	public ModelAndView start() {
		ModelAndView mv = new ModelAndView("index");
		
		mv.addObject("kategorie", iKategoria.pobierzKategorie());
		mv.addObject("tematy", iTemat.pobierzTematy());
		
		return mv;
	}
	@RequestMapping(value = {"/nowyTemat"}, method=RequestMethod.GET)
	public ModelAndView nowyTematGet() {
		ModelAndView mv = new ModelAndView("nowyTemat");
		
		mv.addObject("kategorie", iKategoria.pobierzKategorie());	
		return mv;
	}
	@RequestMapping(value = {"/nowyTemat"}, method=RequestMethod.POST)
	public ModelAndView nowyTematPost() {
		ModelAndView mv = new ModelAndView("nowyTemat");
			
		return mv;
	}
	@RequestMapping(value="/perform-logout")
	public String logout(HttpServletRequest request, HttpServletResponse response) {
		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		
		if(auth!=null) {
			new SecurityContextLogoutHandler().logout(request, response, auth);
		}
		return "redirect:/login?logout";
	}
	
}

package forum.forum.dao;

import forum.forum.dto.Uzytkownik;

public interface IUzytkownik {
	public Uzytkownik pobierzPoLoginie(String login);
	public boolean dodajUzytkownika(Uzytkownik u);
		

}
package forum.forum.dao;



import javax.transaction.Transactional;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import forum.forum.dto.Uzytkownik;




@Repository
@Transactional
public class IUzytkownikImpl implements IUzytkownik {

	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public Uzytkownik pobierzPoLoginie(String login) {
		String pobierzPoLoginie = "FROM Uzytkownik WHERE login = :login";
		return sessionFactory
				.getCurrentSession()
					.createQuery(pobierzPoLoginie, Uzytkownik.class)
						.setParameter("login", login)
							.getSingleResult();		

	}

	@Override
	public boolean dodajUzytkownika(Uzytkownik u) {
		try {
			sessionFactory.getCurrentSession().persist(u);
			return true;
		}catch(Exception ex) {
			ex.printStackTrace();
			return false;
		}
	}

}
package forum.forum.controller;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;

import forum.forum.dao.IUzytkownik;
import forum.forum.dto.Uzytkownik;
import forum.forum.model.UserModel;

@ControllerAdvice
public class GlobalController {

	@Autowired
	private HttpSession session; 
	@Autowired
	private IUzytkownik iUzytkownik;
	
	private UserModel userModel = null;
	
	@ModelAttribute("userModel")
	public UserModel getUserModel() {
		
		if(session.getAttribute("userModel")==null) {
			Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
			
			Uzytkownik uzytkownik = iUzytkownik.pobierzPoLoginie(authentication.getName());
			
			if(uzytkownik!=null) {
				userModel = new UserModel();
				
				userModel.setId(uzytkownik.getId());
				userModel.setLogin(uzytkownik.getLogin());
				userModel.setRole(uzytkownik.getRola());
			}
		}
		return (UserModel) session.getAttribute("userModel");
	}
}
package forum.forum.model;

import java.io.Serializable;

public class UserModel implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private int id;
	private String login;
	private String role;
	
	@Override
	public String toString() {
		return "UserModel [id=" + id + ", login=" + login + ", role=" + role + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getRole() {
		return role;
	}
	public void setRole(String role) {
		this.role = role;
	}

}
0
<?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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">


	<context:component-scan base-package="forum.forum" />

	<context:component-scan base-package="config" />

	<mvc:annotation-driven />

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



	<mvc:resources location="/assets/" mapping="/resources/**" />
	


</beans>

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

	<context:component-scan base-package="config" />
	<context:component-scan base-package="forum.forum" />
	
	<http pattern="/resources/**" security="none"/>
	
	<http>
		<intercept-url pattern="/panel" access="hasAuthority('ADMIN')" />
		<intercept-url pattern="/nowyTemat" access="hasAuthority('USER')" />
		<intercept-url pattern="/**" access="permitAll" />
		<form-login login-page="/login"/>
		<access-denied-handler error-page="/login"/>

	</http>

	<authentication-manager>
		<authentication-provider>
			<jdbc-user-service data-source-ref="dataSource"
				users-by-username-query="select login, haslo, enabled from uzytkownik where login = ?"
				authorities-by-username-query="select login, rola from uzytkownik where login = ?"
			/>
		</authentication-provider>
	</authentication-manager>

</beans:beans>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
		 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">

	<display-name>Archetype Created Web Application</display-name>


	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

		<init-param>
			<param-name>throwExceptionIfNoHandlerFound</param-name>
			<param-value>true</param-value>
		</init-param>
	</servlet>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/spring-security.xml
		</param-value>
	</context-param>
	
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</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>
</web-app>

-----FILE JSP it is example with ${userModel.login}-----------------------------------


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	Welcome: ${userModel.login}
	
	<form method="post">
		<p>Wprowadz tytul tematu:</p>
		<input type="text" name="tytul" maxlength="255"/>
		<p>Wprowadz tekst:</p>
		<textarea rows="9" cols="40" name="tresc"></textarea><br/>
		
		<select name="kategoria">
			<c:forEach var="kategoria" items="${kategorie}">
				<option value="${kategoria.id}">${kategoria.nazwa}</option>
			</c:forEach>
		</select><br/>
		<input type="submit" value="Dodaj"/>
	</form>
	
</body>
</html>
0

No i? xd wykorzystujesz forum jako zamiennik GitHuba?

0

nie dokonczylem watku bo mi prad wysiadl a mianowicie moje pytanie w sprawie bledu gdyz po zalogowaniu ktore jest w spring security nie wyswietla mi sie w przykladowym .jsp login uzytkownika i czy sesja jest zrobiona poprawnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1