北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

今日分享开始啦,请大家多多指教~

现今大部分系统都会有自己的鉴权服务,它是用户与系统交互的第一步,系统需要一系列步骤明白你是谁,你可以做哪些事,明白了这些之后它才能更好的服务于你。

一、何为鉴权服务

鉴权(authentication)是指验证用户是否拥有访问系统的权利。

鉴权包括两个方面:

  • 用户鉴权,网络对用户进行鉴权,防止非法用户占用网络资源。
  • 网络鉴权,用户对网络进行鉴权,防止用户接入了非法的网络,被骗取关键信息。
  • 而我们这里的鉴权主要指用户鉴权,即如何确认“你是你”。最简单的体现便是平常用的用户登录登出。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    二、利用servlet+jdbc实现简单的用户登录程序

    1.明确思路

    首先,我们要仔细思考一下我们到底需要什么?

    先让我们回想一下一般的登录是如何做的呢?

    对于网页,首先会出现一个登录页面,然后呢,输入账号密码,点击登录,就会弹出成功/失败的页面。

    那如何去判断成功/失败呢?

    思考一下,最简单的方法便是拿到前端传来的数据之后便将其拿到数据中去查,看看密码是不是一样,然后给前端回复说——我找到了,他就是XXX或者我找不到他的记录,让他重新输入账号密码。

    然后前端对此回复做出相应的操作,比如登录成功便跳转到首页,失败让用户重新输入。

    2.手把手教你实现一个简单的web登录程序

    ①创建web项目

    打开idea,新建一个web项目

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    这里为了方便jar包的管理,选择maven结构的项目,然后选择从原型创建,选择webapp(这里只是方便,你也可以选择空项目,不过会费点时间)。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    点击下一步,输入项目名称

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    这里选择相应的maven,idea里有自带的maven和jar包仓库。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    选择完成,这样一个最简单的项目结构就出来了。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    接下来需要配置一下pom.xml,因为要用到jdbc和tomcat的jar包(毕竟都是调用人家的接口)

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    (加在project标签里就行),上面配置的意思就是导入两个第三方工具包

    ②编写简单的登录页面

    这里我既想要好看,又想偷懒,所以用了layui框架的模板

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    当然以上代码有一部分注释掉了,原因是如果用JSON格式发送post请求,后端的servlet(准确的说是Tomcat的解析)并没有帮我们解析封装这部分数据,所以我们无法直接get到,得自己另外解析数据,当然也有一些第三方的工具包可以帮我们做这些事情(如阿里的fastjson等),这里为了使其更加简单,所以采用表单提交post请求的方式,这样解析的工作就不用我们做了。

    效果是这样的:

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    如果你没学过layui或者对前端不太行,你也可以这样

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    一样的功能,不过看上去的效果就不怎么好了。

    ③编写servlet程序

    当有了前端的页面,看上去好了很多,但实质校验的程序我们还没有写。

    想象一下我们就是后端程序,当前端的数据历经艰险,从错综复杂的网络中到达我们的服务器,然后经过系统分发到相应端口,这时恰在此端口的tomcat程序接受到了HTTP请求并对其封装,经过一系列骚操作后分发到了我们手中,而我们要做的就是拿着这个封装好的请求进行校验操作,然后对返回对象进行相应修改。而这也是servlet类所需要做的。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    你可能会疑惑这个UserMapper是什么,别急,后面会介绍。

    ④封装jdbc操作,编写简单的数据库连接池

    在操作数据库之前,最好写个简单的数据库连接池。一个是简化我们的操作,一个是节省开销,提高性能(Connection是个非常耗费资源的对象,频繁的创建和回收将会是一笔巨大的开销)

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    当然上述实现非常简陋,并发性能也不是很好,高并发时可能还会发生OOM,不过凑活着用吧。

    ⑤操作数据库

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    这里采用单例的设计模式,保证UserMapper对象只有一个。(非常简陋,实现也不优雅,看着自己的代码,突然感觉框架好方便啊)

    这里的作用就是根据用户名查询密码。

    ⑥配置web.xml

    虽然写了servlet,但是tomcat并不知道你这个servlet的类在哪啊,所以必须让tomcat知道,配置web.xml的目的就是通知tomcat在哪(更准确的说是servlet容器)的一种方式(当然也可以用注解)。
    配置如下:

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    servlet-class里写你这个Servlet类的路径即可。

    ⑦idea运行配置

    idea配置还是比较方便的。

    点击编辑配置

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    点击+(添加按钮),选择tomcat服务器(选哪个都可以,我选了tomcat本地)

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    然后选择相应的服务器程序,配置项目访问的端口,就是tomcat在哪个端口运行(注意不要占用已有端口,默认8080,我这里是因为8080被占了,所以用了9090)

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    这里还得配置一下工件,因为项目要运行一般有两种方式:

  • 一种是打成war包放在tomcat的webapps目录下
  • 一种是打成jar包直接运行(SpringBoot就是用这种方式,因为它内置tomcat)
  • 北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    这里工件的作用就是打成war包,至于每次运行部署?idea都会帮你搞定!是不是很方便?

    这里那个应用程序上下文的作用就是给访问路径加个前缀

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    一般直接写成”/”就行了,这样我们要访问login.html,是不是很方便?

    ⑧运行程序

    点击运行

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    访问成功,试试账号密码。

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    我现在数据库里只有root这一条数据,试试效果

    输入错误的密码

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    输入正确的密码

    北大博士带你解密:怎么用Java轻松实现鉴权服务?小白:太简单了

    到这里,我们松了一口气,终于完成了简单的登录功能。

    三、回顾改善

    别急,我们虽然实现了登录这个功能,但是这个实现实在太简陋了,各方各面都没考虑,返回页面也只登录成功,登录失败的提示。

    我们回顾一下,仔细想想有哪些问题,

    1.密码加密裸奔

    2.登录信息未存储

    四、用SpringBoot+SSM实现一套简单的鉴权服务(注册,登录,权限控制)

    小结

    看到一个题目要求写个简单web登录程序,意思是用servlet、jsp和jdbc完成。本着要么不做,要做就要做好的原则,我开始着手完成此次题目(其实也是写实训的用户鉴权部分),而之前也有相关经验,这次正好能派上用场。

    今日份分享已结束,请大家多多包涵和指点!

    来源:阿木自动化软件测试

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年4月3日
    下一篇 2021年4月3日

    相关推荐