springSecurity如何自定义用户认证

这篇文章将为大家详细讲解有关springSecurity如何自定义用户认证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

网站的建设成都创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为纱窗等企业提供专业服务。

首先我需要在xml文件中声明.我要进行自定义用户的认证类,也就是我要自己从数据库中进行查询

<http pattern="/*.html" security="none"/>  <http pattern="/css/**" security="none"/>  <http pattern="/img/**" security="none"/>  <http pattern="/js/**" security="none"/>  <http pattern="/plugins/**" security="none"/>  <http pattern="/seller/add.do" security="none"/>  <!-- use-expressions:设置是否启动SpEL表达式,默认值是true。 -->  <http use-expressions="false">    <!--      配置SpringSecurity的拦截路径(拦截规则)      * pattern:配置拦截规则。  /* 代表的是根路径下的所有资源(不包含子路径) /**代表的是根路径下所有的资源(包含子路径)      * access:设置角色 角色命名 ROLE_角色名称 如: ROLE_USER    -->    <intercept-url pattern="/**" access="ROLE_SELLER"/>    <!--    开启表单验证      username-parameter="username"      password-parameter="password"      login-page      :登录页面名称 以 / 开始      default-target-url  :登录成功后跳转的页面      login-processing-url:提交的路径的设置 默认值"/login" 可以修改    -->    <form-login login-page="/shoplogin.html" default-target-url="/admin/index.html" always-use-default-target="true" authentication-failure-url="/shoplogin.html"/>    <!-- 不使用csrf的校验 -->    <csrf disabled="true"/>    <!-- 配置框架页面不拦截 -->    <headers>      <frame-options policy="SAMEORIGIN"/>    </headers>    <!-- 注销的配置 -->    <logout logout-url="/logout" logout-success-url="/shoplogin.html" />  </http>  <!-- 配置认证管理器 -->  <authentication-manager>    <!-- 认证的提供者 -->    <authentication-provider user-service-ref="userDetailService">      <password-encoder ref="passwordEncoder"></password-encoder>    </authentication-provider>  </authentication-manager><!-- 配置自定义的认证类 -->  <beans:bean id="userDetailService" class="com.qingmu2.core.service.UserDetailServiceImpl">    <beans:property name="sellerService" ref="sellerService"></beans:property>  </beans:bean><!--加密时候使用的算法是BCryptPasswordEncoder-->  <beans:bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

配置完自定义的文件以后,在需要自定义认证类的模块中实现

UserDetailsService

package com.qingmu2.core.service;import com.alibaba.dubbo.config.annotation.Reference;import com.qingmu2.core.pojo.seller.Seller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.authority.SimpleGrantedAuthority;import org.springframework.security.core.userdetails.User;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.core.userdetails.UsernameNotFoundException;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;/** * 自定义的认证类 * @Auther:qingmu * @Description:脚踏实地,只为出人头地 * @Date:Created in 8:33 2019/5/31 */public class UserDetailServiceImpl implements UserDetailsService {  private SellerService sellerService;  public UserDetailServiceImpl() {  }  @Override  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {    Seller seller = sellerService.findOne(username);    if(null!=seller){      //判断一次商家是否被审核通过.      if("1".equals(seller.getStatus())){        //创建一个集合,用来存储权限        HashSet<GrantedAuthority> authorities = new HashSet<>();        authorities.add(new SimpleGrantedAuthority("ROLE_SELLER"));        //将这个用户的信息返回给认证类        return new User(username,seller.getPassword(),authorities);      }    }    //没有这个用户,则返回null    return null;  }  public UserDetailServiceImpl(SellerService sellerService) {    this.sellerService = sellerService;  }  public SellerService getSellerService() {    return sellerService;  }  public void setSellerService(SellerService sellerService) {    this.sellerService = sellerService;  }}

关于“springSecurity如何自定义用户认证”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

网页名称:springSecurity如何自定义用户认证
浏览地址:https://www.cdcxhl.com/article44/ipehee.html

成都网站建设公司_创新互联,为您提供网站排名网站设计公司移动网站建设企业建站微信公众号网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司