我正在为Android App创建Rest API(Spring Boot项目).从数据库对用户进行身份验证的理想方法应该是什么?

1.在控制器类中查询数据库

2.在过滤器类中查询数据库

3.使用Spring Security

public class TokenValidationFilter implements Filter {

Connection connection = null;

@Override

public void doFilter(ServletRequest request,

ServletResponse response, FilterChain chain)

throws IOException, ServletException {

final String accessToken = req.getHeader("accessToken");

final String userId = req.getHeader("userId");

// Do Sql Query to Authenticate User

}

@Override

public void init(FilterConfig filterConfig) throws ServletException {}

}

解决方法:

您不需要添加自己的过滤器.

当您使用Spring Security时,它仅通过添加一个过滤器来工作,例如BasicAuthenticationFilter.除此之外,它还允许您管理自己需要做的事情.

例如,它允许您通过SecurityContextHolder.getContext().getAuthentication()的简单方式使用Authenticated主体,因为它基于ThreadLocal起作用,您可以在代码中的任何地方使用它.

如何管理不同URL的授权?还是管理CORS配置?

使用框架配置Spring安全性时,通过简单的构建器模式就可以实现所有这些功能.

另外,如果您以后想要使用OAuth,则将其与安全框架集成在一起,可以通过使用AuthorizationServer和ResourceServer使其非常轻松地工作.

即使是最简单的基本身份验证配置,也应该使用安全框架,而不是使用定制解决方案进行身份验证.

您还可以认为,安全框架还集成了其他功能,例如审核由哪个用户修改的数据库事务等.

您将在自己的Filter中编写的内容(以及将来将要重构的内容)已写在框架中供您使用.

标签:spring-boot,rest,spring,java

来源: https://codeday.me/bug/20191109/2011778.html

java实现 mysql 身份认证,java-从Filter中的数据库对用户进行身份验证是一种好习惯吗?...相关推荐

  1. java获取mysql表的主键_Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  2. java基于token的认证,Java实现基于token认证

    随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...

  3. java 连接mysql 8.0,java连接mysql 8.0的问题

    mysql 8.0 是现在较新的版本,所以很多项目都开始用户mysql 8,在使用java连接mysql 8的时候,很多人想当然觉得需要使用新的连接驱动程序,比如mysql-connector-jav ...

  4. scjp java程序员_Sun认证Java程序员SCJP考题常见陷阱

    (1) Two public classes in the same file. (illegal) 同一个文件里有两个public类.(非法) (2) Main method calling a n ...

  5. 参加Sun认证Java程序员_sun认证java程序员笔试经验

    sun认证java程序员笔试经验 SCJP测验Java程序设计概念及能力,内容偏重于Java语法及JDK的内容;SCJD则进一步测试用Java开发应用程序的能力,考试者必须先完成一个程序的设计方案,再 ...

  6. 数据库与身份认证:在项目中操作 MySQL

    在项目中操作数据库的步骤 ①安装操作 MySQL 数据库的第三方模块(mysql) ②通过 mysql 模块连接到 MySQL 数据库 ③通过 mysql 模块执行 SQL 语句 安装与配置 mysq ...

  7. 使用JDBC连接Mysql遇到的问题:url中的数据库名字是什么?

    以前学过一点编程,丢下好几年了,今天想重新捡起来. 在尝试使用Java的JDBC连接 Mysql数据库时,出现了一些问题,还有自己的一些疑惑,在此记录下来. 1.装载驱动的链接变了 以前的版本:Cla ...

  8. 360点睛销售开放平台-身份认证-java版

    这一份是从360点睛API交流群(98725560)里的群文件下载来的demo,希望可以帮助到大家 package test;/** 本示例由360网友 浩世凡夫 (http://bbs.360saf ...

  9. xamarin怎么调用java的_XamarinSQLite教程在Xamarin.Android项目中使用数据库

    XamarinSQLite教程在Xamarin.Android项目中使用数据库 在Xamarin.Android项目中使用预设数据库的具体操作步骤如下: (1)创建一个Xamarin.Android项 ...

最新文章

  1. 华为mate 20pro升级鸿蒙,华为放大招!华为Mate20系列也能拍月亮,以后还能升级鸿蒙...
  2. 如何让插件加载到Qt Designer
  3. 开始的一些知识和概念
  4. Memcache安装 2
  5. 树莓派连接wifi_「树莓派已入侵工控领域」树莓派工控机助力雷诺汽车连接智能电网...
  6. 研究机构:特斯拉Model 3是2月份最畅销电动汽车
  7. Veeam FAQ系列转载(三)
  8. FX-3U PLC串口与PC通信调试
  9. PHP - 简单获取页面内容
  10. 如何将纸质书怎么弄成电子版?如何将纸质文档变成电子文档,下面教你方法
  11. 三星typec转接耳机没反应_1MORE最新双旗舰无线降噪耳机评测:国货强于外夷的希望...
  12. 整数dct matlab,关于离散余弦变换(DCT)
  13. ansible 变量
  14. kettle Call From LAPTOP-14BPR3NI/192.168.1.2 to locahost:8020 failed on connection
  15. 年纪一大把,胡子一大堆,还能学好编程吗?今天我问了我自己
  16. 前端工程师必备:前端的模块化
  17. java i=i++和j=i++的区别
  18. linux与linux驱动
  19. 它听键盘声就知道你敲的是什么——GitHub 热点速览 Vol.51
  20. SQL server 游标(只进游标)讲解

热门文章

  1. AtCoder Grand Contest 010 D - Decrementing
  2. epoll浅析以及nio中的Selector
  3. Boosting and AdaBoost
  4. 用Nginx搭建IIS集群实现负载均衡
  5. nodejs+express开发blog(2)
  6. 一个优秀的Android应用从建项目开始
  7. iOS 创建推送证书
  8. [置顶] Android仿人人客户端(v5.7.1)——应用主界面之左侧面板UI实现
  9. 中移动酝酿改革数据业务分成模式:SP与CP分开
  10. Description Resource Path LocationType Java compiler level does not match the version of the instal