资讯专栏INFORMATION COLUMN

Spring4和SpringSecurity4的整合(一)

sorra / 1470人阅读

摘要:的官方文档及其简单,他的示例配置就是在文件中把用户名和密码写固定了,然而在实际工作中是不可能的,参考了下网上的教程发现良莠不齐,特此写下记录学习过程首先导入包配置后面直接写这里会提示出错,提示找不

SpringSecurity的官方文档及其简单,他的示例配置就是在xml文件中把用户名和密码写固定了,然而在实际工作中是不可能的,参考了下网上的教程发现良莠不齐,特此写下记录学习过程
首先pom导入jar包:
pom.xml


        
            org.glassfish.web
            javax.servlet.jsp.jstl
            1.2.2
        
        
            javax.servlet
            jstl
            1.2
        
        
            javax
            javaee-api
            7.0
            provided
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
        
        
            junit
            junit
            3.8.1
            test
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
            org.springframework.security
            spring-security-web
            4.1.3.RELEASE
        
        
            org.springframework.security
            spring-security-config
            4.1.3.RELEASE
        
    

SpringSecurity.xml配置


    
        
    
    
    
    
        
        
    

UserDetailService实现类

public class MyUserDetailService implements UserDetailsService  {

    @Override
    public UserDetails loadUserByUsername(String username)
            throws UsernameNotFoundException {
//在这里为了方便测试直接固定了
        MyUser myUser = new MyUser();
        System.out.println(username + "load的值");
        myUser.setUser_name("a");
        myUser.setUser_password("aa");
        myUser.setUser_role("ROLE_ADMIN");
        return new MyUserDetail(myUser, getAuthorities());
    }

    private Collection getAuthorities() {
        Collection grantedAuthorities = new ArrayList<>();
        SimpleGrantedAuthority grantedAuthority = new SimpleGrantedAuthority("ROLE_ADMIN");
        grantedAuthorities.add(grantedAuthority);
        return grantedAuthorities;
    }

}

MyUserDetail实现类:为了以后能更多的对用户进行操作

public class MyUserDetail implements UserDetails {
    private MyUser myUser;
    private Collection authorities;

    public MyUserDetail(MyUser user,Collection authorities) {
        this.myUser = user;
        this.authorities = authorities;
    }

    @Override
    public Collection getAuthorities() {
        // TODO Auto-generated method stub
        return authorities;
    }

    @Override
    public String getPassword() {
        return myUser.getUser_password();
    }

    @Override
    public String getUsername() {
        return myUser.getUser_name();
    }

    @Override
    public boolean isAccountNonExpired() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isAccountNonLocked() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isEnabled() {
        // TODO Auto-generated method stub
        return false;
    }

AuthenticationProvider类

public class SecurityProvider implements AuthenticationProvider {
    @Autowired
    private MyUserDetailService userDetailsService;
    @Override
    public Authentication authenticate(Authentication authentication)
            throws AuthenticationException {
        UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication;
        UserDetails userDetails = userDetailsService.loadUserByUsername("a");
        if (userDetails == null) {
            throw new UsernameNotFoundException("账号不存在");
        }
        return new UsernamePasswordAuthenticationToken(userDetails, "aa",
                userDetails.getAuthorities());
    }

    @Override
    public boolean supports(Class authentication) {
        // TODO Auto-generated method stub
        return UsernamePasswordAuthenticationToken.class.equals(authentication);
    }

其他的正常配置即可
地址:https://github.com/Somersames...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66725.html

相关文章

  • Spring4SpringSecurity4整合(二)连接mybatismysql

    摘要:在上一篇基本配置了一些文件中,基本可以在文件中指定用户名和密码来进行实现的验证,这次和一起来配合使用加入的配置文件别名在的中配置数据源查找配置事物然后建立层,和层以及对应这里省略实 在上一篇基本配置了一些文件中,基本可以在文件中指定用户名和密码来进行实现SpringSecurity的验证,这次和mynatis一起来配合使用 加入mybatis的配置文件: mybatis-config....

    NoraXie 评论0 收藏0
  • Spring Cloud Zuul中使用Swagger汇总API接口文档

    摘要:代码示例本文示例读者可以通过查看下面仓库的中的三个项目如果您对这些感兴趣,欢迎收藏转发给予支持以下专题教程也许您会有兴趣基础教程基础教程 有很多读者问过这样的一个问题:虽然使用Swagger可以为Spring MVC编写的接口生成了API文档,但是在微服务化之后,这些API文档都离散在各个微服务中,是否有办法将这些接口都整合到一个文档中?之前给大家的回复都只是简单的说了个思路,昨天正好...

    Salamander 评论0 收藏0
  • 服务器架构

    摘要:我的后端书架阿里大牛,书单整合一整合一分布式生成器架构师之路这也是本文要讨论的核心问题如何高效生成趋势有序的全局唯一。 轻松搞定 rabbitMQ rabbitMQ 的基本使用。 REST 真的完全适合微服务架构吗? 作者根据自己的微服务经验,提出 REST 并不是微服务的唯一通信机制,从而介绍了微服务的几种通信机制,包括 REST、管道以及基于异步消息传递。同时,作者提出了在不同的场...

    nidaye 评论0 收藏0
  • Spring笔记04_AOP注解开发_模板_事务

    摘要:后置增强周杰伦环绕通知在切面类中添加以下方法环绕通知环绕前增强环绕前增强测试前置增强保存订单。。。不使用事务管理。 1. Spring基于AspectJ的注解的AOP开发 1. 1 SpringAOP的注解入门 创建项目,导入jar包 需要导入Spring基础包4+2 需要导入AOP联盟包、AspectJ包、Spring整合Aspect包Spring-aop包 Spring整合单...

    youkede 评论0 收藏0
  • 基于注解方式配置springMVC 并整合mybatis(二)

    摘要:基于注解方式配置并整合一接上篇文章,如下是整合数据层。整合时,如果不加上就无法启动容器。 基于注解方式配置springMVC 并整合mybatis(一) 接上篇文章,如下是整合数据层。 spring-mybatis.xml ...

    peixn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<