С spring-security
вы можете предоставить эту авторизацию с минимальными усилиями. Добавьте необходимые зависимости к вашему POM
и настройте аутентификацию. Помните, что при добавлении зависимости spring-security
ее версия должна быть совместима с используемой вами версией Spring.
Вы можете просто предоставить аутентификацию и авторизацию, например
@Configuration
@EnableWebSecurity
public class DemoSecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure( AuthenticationManagerBuilder auth ) throws Exception
{
// Using in-memory authentication
User.UserBuilder users = User.withDefaultPasswordEncoder();
auth.inMemoryAuthentication()
.withUser( users.username( "john" ).password( "john1234" ).roles( "READ", "WRITE" ) )
.withUser( users.username( "doe" ).password( "doe1234" ).roles( "READ", "WRITE", "CREATE" ) );
}
/**
* This allows adding custom login-form and add HTTP URL security
*
* @param http
* @throws Exception
*/
@Override
protected void configure( HttpSecurity http ) throws Exception
{
http.authorizeRequests()
.antMatchers( "/" ).permitAll()
.antMatchers( "/dashboard" ).hasAnyRole( "READ","WRITE" )
.antMatchers( "/anotherPage" ).hasAnyRole( "READ","WRITE","CREATE" )
.anyRequest()
.authenticated()
.and()
.formLogin() // Add form login
.loginPage( "/showMyLoginPage" ) // Pointing to custom login form. This line is optional as spring by default provides a login page
.loginProcessingUrl( "/authenticateTheUser" ) // No coding needed. Just provide some endpoint. You need not implement this endpoint. Spring will take care of it.
.permitAll()
// Other necessary validations like CSRF or cookie policy
}
. учебник по весеннему официальному выполните c здесь .
И как только вы выполните авторизацию с помощью Spring-security
. Вы можете спросить ваш шаблонный движок [если он поддерживает]. чтобы показать или скрыть определенные разделы страницы в зависимости от ролей зарегистрированного пользователя.
В качестве примера, вот как можно скрыть ссылку на основе роли пользователя в JSP, добавив поддержку безопасности, например: <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
Здесь только пользователи с ролью ADMIN
могут видеть эту ссылку.
<security:authorize access="hasRole('ADMIN')">
<hr>
<p><a href="${pageContext.request.contextPath}/admin">Link to admin page</a> ( Only admin can see this )</p>
<hr>
</security:authorize>
Эта ссылка содержит всю необходимую информацию для начала работы spring-security
.