zoukankan      html  css  js  c++  java
  • spring security 自定义登录页面及从数据库查询账户登录

    一.使用自定义登录页面

      1.首先关闭 登录页面 , 登录错误后跳转页面, 登录成功后跳转页面 的拦截

         <!--不拦截静态资源-->
    <security:http pattern="/css/**" security="none"></security:http>
    <security:http pattern="/img/**" security="none"></security:http>
    <security:http pattern="/plugins/**" security="none"></security:http>

    <!--不拦截登录 不拦截 error-->
    <security:http pattern="/login.jsp" security="none"/>
    <security:http pattern="/file.jsp" security="none"/>
    <security:http pattern="/index.ico" security="none"/>
     

      2.自定义登录页面

     <security:http  use-expressions="false">
            <security:intercept-url pattern="/**" access="ROLE_USER"/>
            <!--开启表单登录
                login-page=""  登录页面
            login-processing-url="/log" 登录提交页面路径,默认login
    default-target-url="" 登录成功页面 authentication-failure-url="" 登录失败页面 --> <security:form-login login-page="/login.jsp" login-processing-url="/log" default-target-url="/index.jsp" authentication-failure-url="/file.jsp" /> <!--关闭跨越请求 如果没有关闭会报403错误--> <security:csrf disabled="true"/>
    </security:http>

    二. 从数据库查询用户登录

    1.修改spring-security配置

     <!-- 配置认证登录信息 从数据库读取账户-->
    <security:authentication-manager>
       <!--提供服务类 去数据库查询账户密码-->
      <security:authentication-provider user-service-ref="membersServiceImpl">
      </security:authentication-provider>
    </security:authentication-manager>

    2.创建pojo dao service层

    注:service接口要继承UserDetailsService

    public class MembersServiceImpl implements MembersService {
    
        @Autowired
        MembersDao membersDao;
    
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
              //根据用户名获取对象
           Members members
    = membersDao.findByName(username); if (members!=null){
            //创建角色集合对象 Collection
    <GrantedAuthority> authorities = new ArrayList<>();
               GrantedAuthority grantedAuthority
    = new SimpleGrantedAuthority("ROLE_USER"); authorities.add(grantedAuthority); User user = new User(members.getUserName(), "{noop}"+members.getPassword(), authorities); return user; } return null; } }

    注:顺序不能错,先关闭要页面的拦截,再定义页面,否则无法运行

  • 相关阅读:
    POC- Proof of Cocept -- 概念验证
    英语语法学习 7 -- 数词
    英语语法学习6 -- 代词
    英语语法学习5-冠词
    英语语法学习4-名词
    英语语法学习3-句子的组成和分类
    alibaba-Java开发手册心得-一编程规约-4oop(面向对象编程)规约
    alibaba-Java开发手册心得-一编程规约-3代码格式
    alibaba-Java开发手册心得-一编程规约-2常量定义
    魔法值的简单了解
  • 原文地址:https://www.cnblogs.com/dragonyl/p/11240926.html
Copyright © 2011-2022 走看看