广告
返回顶部
首页 > 资讯 > 精选 >Java开发之spring security实现基于MongoDB的认证功能
  • 443
分享到

Java开发之spring security实现基于MongoDB的认证功能

javaspringsecurity 2023-05-30 22:05:07 443人浏览 八月长安
摘要

本文实例讲述了Java开发之spring security实现基于MongoDB的认证功能。分享给大家供大家参考,具体如下:spring security对基于数据库的认证支持仅限于JDBC,而很多项目并非使用JDBC,比如Nosql数据库

本文实例讲述了Java开发spring security实现基于MongoDB的认证功能。分享给大家供大家参考,具体如下:

spring security对基于数据库的认证支持仅限于JDBC,而很多项目并非使用JDBC,比如Nosql数据库很多使用的是 MonGo Java Driver,这样就无法用默认的<jdbc-user-service>进行支持认证。

如果项目不是使用JDBC,没么解决办法就是:自己定义一个认证服务。

新建一个CustomUserDetailsService类

这个类实现了UserDetailsService接口。代码如下:

public class CustomUserDetailsService implements UserDetailsService {  @Autowired  mongoDBHelper dbhelper;    @Override  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {     //步骤一:从数据库中查出用户数据    MongoDatabase db = dbhelper.getDB("huanle");    MongoCollection<Document> users = db.getCollection("user");    Document filter = new Document();    filter.append("account",username);    Document result = users.find(filter).first();    if(result==null) throw new UsernameNotFoundException(username+"不存在");    //步骤二:装配到UserDetails,相当于生成了一个<user>标签    UserDetails userDetails = new User(result.getString("account"),           result.getString("passWord"), true, true, true, true,getAuthorities(result.getInteger("access")) );    return userDetails;  }    public Collection<GrantedAuthority> getAuthorities(int access){    List<GrantedAuthority> authList = new ArrayList<GrantedAuthority>(2);    authList.add(new SimpleGrantedAuthority("ROLE_USER"));    if(access==1){      authList.add(new SimpleGrantedAuthority("ROLE_ADMIN"));    }    return authList;  }}

--结束END--

本文标题: Java开发之spring security实现基于MongoDB的认证功能

本文链接: https://www.lsjlt.com/news/221744.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作