文档章节

Spring Security使用

y
 yan5845hao
发布于 2017/05/25 15:38
字数 496
阅读 27
收藏 0
点赞 0
评论 0

重写WebSecurityConfigurerAdapter

package com.uwo.security.roles.configuration;
import com.uwo.security.roles.provider.UwoAuthenticationProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
 * Created by yanhao on 2017/5/24.
 */
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class UwoSecurity extends WebSecurityConfigurerAdapter {
    // 自定义验证
    @Autowired
    private UwoAuthenticationProvider authenticationProvider;
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider);
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/css/**", "/img/**").permitAll()
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated()
            .and()
                .formLogin()
                    .loginPage("/login")
                    .failureUrl("/login?error")
                    .defaultSuccessUrl("/")
                .permitAll()
            .and()
                .logout().permitAll();
    }
}

HttpSecurity使用

  • http过滤
http.addFilter(实现Filter.class)
http.addFilterBefore(实现Filter.class)  
http.addFilterAfter(实现Filter.class)  
  • ExpressionInterceptUrlRegistry配置 (http.authorizeRequests())
// 配置
http.authorizeRequests()
    .antMatchers("无需授权").permitAll()
    // 剩下的请求都需要授权请求
    .anyRequest().authenticated()
  • FormLoginConfigurer 配置(http.formLogin())
// 配置
http.formLogin()
    .loginProcessingUrl("默认自带的登录页面地址")
    .loginPage("控制器路由登录地址")
    .usernameParameter("用户名参数")
    .passwordParameter("密码参数")
    .defaultSuccessUrl("默认成功地址")
    .failureUrl("失败地址")
    .failureForwardUrl("失败跳转地址")
    .failureHandler(实现AuthenticationFailureHandler.class)
    .successHandler(实现AuthenticationSuccessHandler.class)

AuthenticationManagerBuilder使用

// 设置固定权限
auth.inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
// 获取用户信息
auth.userDetailsService(实现UserDetailsService.class)
    // 设置加密算法与密码匹配
      .passwordEncoder(实现PasswordEncoder.class)
// 上面的众合体
auth.authenticationProvider(实现AuthenticationProvider.class)

UserDetailsService实现

package com.uwo.security.roles.service;
import com.uwo.security.roles.pojo.Uwo;
import org.apache.log4j.Logger;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
/**
 * Created by yanhao on 2017/5/24.
 */
@Service
public class UwoService implements UserDetailsService {
    private final Logger log = Logger.getLogger(UwoService.class);
    public UserDetails loadUserByUsername(String user) throws UsernameNotFoundException {
        log.warn("username = " + user);
        Uwo uwo = new Uwo();
        uwo.setUsername("uwo");
        uwo.setPassword("123456");
        uwo.setRole("ADMIN");
        return uwo;
    }
}

AuthenticationProvider实现

package com.uwo.security.roles.provider;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Component;
import java.util.Collection;
/**
 * Created by yanhao on 2017/5/25.
 */
@Component
public class UwoAuthenticationProvider implements AuthenticationProvider {
    private final Logger log = Logger.getLogger(UwoAuthenticationProvider.class);
    @Autowired
    private UserDetailsService userDetailsService;
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        String username = authentication.getName();
        String password = (String) authentication.getCredentials();
        log.warn("username == " + username + "password == " + password);
        /// 用户名验证实施代码
        UserDetails user = userDetailsService.loadUserByUsername(username);
        /// 用户验证实施代码
        /// 密码加密实施代码
        Collection<? extends GrantedAuthority> authorities = user.getAuthorities();
        return new UsernamePasswordAuthenticationToken(user, password, authorities);
    }
    public boolean supports(Class<?> aClass) {
        return true;
    }
}

PasswordEncoder实现

package com.uwo.security.roles.provider;
import org.apache.log4j.Logger;
import org.springframework.security.crypto.password.PasswordEncoder;
/**
 * Created by yanhao on 2017/5/25.
 */
public class UwoPasswordEncoder implements PasswordEncoder {
    private final Logger log = Logger.getLogger(UwoPasswordEncoder.class);
    /**
     * 密码加密
     * @param password
     * @return
     */
    public String encode(CharSequence password) {
        log.warn("password == " + password);
        return password.toString();
    }
    /**
     * 密码验证
     * @param password
     * @param encodedPassword
     * @return
     */
    public boolean matches(CharSequence password, String encodedPassword) {
        log.warn("password == " + password + " -=- encodedPassword == " + encodedPassword);
        return encodedPassword.equals(password.toString());
    }
}

© 著作权归作者所有

共有 人打赏支持
y
粉丝 7
博文 119
码字总数 21349
作品 0
扬州
程序员
Spring Security实现RBAC权限管理

Spring Security实现RBAC权限管理 一简介 在企业应用中,认证和授权是非常重要的一部分内容,业界最出名的两个框架就是大名鼎鼎的 Shiro和Spring Security。由于Spring Boot非常的流行,选择...

小忽悠
06/21
0
0
《Spring Security3》第二章第二部分翻译

三步之内使我们的应用变得安全 尽管Spring Security的配置可能会很难,但是它的作者是相当为我们着想的,因为他们为我们提供了一种简单的机制来使用它很多的功能并可以此作为起点。以这个为起...

小样
2012/03/07
0
0
Spring boot 前后台分离项目 怎么处理spring security 抛出的异常

最近在开发一个项目 前后台分离的 使用 spring boot + spring security + jwt 实现用户登录权限控制等操作。但是 在用户登录的时候,怎么处理spring security 抛出的异常呢?使用了@RestCont...

道可到非常道
05/07
0
0
spring security2.X 添加验证码

ps:这个是spring security 2.x适用! 如何搭建struts2+hibernate+spring+spring security ,可以看我以前写的一篇文章:http://my.oschina.net/BeyondBit/blog/64465 今天我们来介绍一下sprin...

Beyond-Bit
2013/02/18
0
0
spring安全框架Security(二)

好,我们往下看,接着就是应用我们实际项目里的自定义用户权限了 Java代码 security:authentication-manager security:authentication-provider user-service-ref="customUserDetailsServic...

尚浩宇
2015/06/24
0
0
SessionCreationPolicy 枚举常量

Spring Security下的枚举SessionCreationPolicy,管理session的创建策略 ALWAYS 总是创建HttpSession IF_REQUIRED Spring Security只会在需要时创建一个HttpSession NEVER Spring Security不会......

___大侠
06/09
0
0
让Spring Security 来保护你的Spring Boot项目吧

参考资料: 书籍:Spring实战(第4版) 第9章和第14章 Spring Security 参考手册 初识 Spring Security 程序猿DD的Spring Security学习笔记 Spring Security 简介 Spring Security是一个能够为...

潇潇漓燃
05/19
0
0
《Spring Security3》第四章第一部分翻译上(数据库管理信息)

第四章 凭证安全存储 到现在为止,我们已经将JBCP Pets站点做了一些用户友好性方面的升级,包括一个自定义的登录页、修改密码以及remember me功能。 在本章中,我们将会把到目前为止都在使用...

heroShane
2014/02/08
0
0
spring-security3 配置和使用

最近项目中要使用到spring-security,闲来没事就研究了下。发现入门挺简单的,在这里把自己的心得发下,希望对没有接触过想接触的朋友有帮助。 1、在spring-security官网下载最新jar然后拷贝...

blooms
2012/09/18
0
2
spring security

Spring Security 为基于 J2EE 企业应用软件提供了全面安全服务。安全主要包括两个操作“认证”与“验证”(有时候也会叫做权限控制)。“认证”是为用户建立一个其声明的角色的过程,这个角色...

peiquan
07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?

单身税的历史可以追溯到2015年韩国的新政, 低生育率逼得韩国产生了这一政策。 现在我国也要实行这一政策, 很多单身狗就接受不了了 很可惜,国家不包分配对象, 男的都说找对象难, 有没有向...

猫咪编程
10分钟前
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
14分钟前
0
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
0
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
4
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
0
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
0
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部