WEB应用中的基本身份验证和表单身份验证

在ASP.NET中整合表单与Windows身份验证 在本章中,我们将深入探讨如何创建一个自定义的登录页面,这个页面将作为用户访问受保护资源的入口。我们将逐步介绍登录页面的布局设计,包括HTML与CSS的应用,以及用户界面的友好性与安全性设计。随后,我们将深入实现登录逻辑,包括用户名和密码的验证过程,以及错误处理与反馈机制的实现。在一些情况下,内置的授权属性可能无法满足特定的业务需求。在这种情况下,开发者可能需要开发自定义的授权模块来处理复杂的授权逻辑。这通常涉及到实现接口,在此接口中可以编写自己的授权逻辑。示例代码如下:if (! 阅读详情
WEB应用中的基本身份验证和表单身份验证

在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多方式来实现。在本文里,我们不会把所有的验证方法都考虑到,我们的目的是让你学会如何以最简单最方便的验证方法来完成。下面将讨论基本的(BASIC)和基于表单的(FORM-BASED)验证方式。我们考虑使用TOMCAT作为WEB SERVER,它通过server.xml和web.xml文件提供基本的和基于表单的验证。JSP页面中的j_security_check 表单(for FORM-based) 需要两个参数:j_username和j_password。它们指定了在SQL数据库中的登陆角色。你能够看到,它的弹性化,可用性和必要性。

第一步,我们要下载TOMCAT和MYSQL,前者用来做WEB SERVER,后者用来做SQL SERVER。还要下载JDBCRealm工具,它在TOMCAT中使用,用来做MYSQL连接器,连接MYSQL数据库的。

我们假设你已经安装了TOMCAT和MYSQL,那么我们开始从SERVER的配置入手了。当然,你还需要安装JAVA的MYSQL连接驱动,我强烈建议只使用稳定的驱动版本,因为在有些情况下,alpha/beta版本的驱动不能正常工作。

下面我们来操作SQL数据库。老实说,MYSQL和TOMCAT是相当好的工具,它们都是跨平台的,不管你的操作系统是WINDOWS还是类似UNIX/LINUX的,它们都能正常运行。因此,不论运行环境,它们的配置过程都是绝对一样的。

MySQL

在命令行中执行mysql 客户端命令,然后输入:

create database weblogin;

这个将为你创建一个weblogin数据库,它将保存用户名和密码以及角色等一切信息。你对数据库所做的任何改变都会直接立即反映出来。比如说添加用户,改变用户密码和角色等。


create table users (
   login varchar (15) not null,
   pass varchar (15) not null,
   primary key (login)
);

我们创建一个users表用来保存用户的LOGIN和PASSWORD:


create tables groups (
   login varchar (15) not null,
   group varchar (15) not null,
   primary key (login, group)
);

如你看到的,我们要在group表里保存login属于哪个group的信息。下面,我们要插于一些数据用来测试使用,并完成MYSQL的配置工作:

insert into users  ('green', 'testpwd');
insert into groups ('green', 'testgroup');

现在,我们创建了一个用户叫green,他的密码是testpwd,他属于testgroup这个用户组。接着,轮到TOMCAT的配置了。

Tomcat

TOMCAT本身并没有能力操作数据库来实现身份验证。但是可以依靠JDBCRealm。下面我们来使用它。

下面我们从TOMCAT的/conf/server.xml文件来开始我们的配置。打开这个文件并找到下面的内容:

<Realm className="org.apache.catalina.realm.MemoryRealm" />

删除这一行,或者用<!-- ... --> 注释掉它,我们要使用JDBCRealm。所以输入下面的内容:


<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
   driverName="org.gjt.mm.mysql.Driver"
   connectionURL="jdbc:mysql://localhost/weblogin?user=test&password=test"
   userTable="users" userNameCol="login" userCredCol="pass"
   userRoleTable="groups" roleNameCol="group" />

下面我们对field参数做详细讲解:

  • debug—这是我们设置的debug参数,数字越高显示信息越详细。
  • driverName—这个是MYSQL驱动的名字。要确保这个驱动的JAR包在TOMCAT的CLASSPATH中能够找到它。
  • connectionURL—这个是用来建立JDBC连接的数据库URL。在这个field里,weblogin是我们数据库的名字。user和password 是我们登陆数据库的用户数据。
  • userTable—一个定义有userNameCol和userCredCol字段的表。
  • userNameCol和userCredCol—users表里定义的login和pass。

现在,我们完成了配置过程。下面,我们要配置WEB应用程序来被这样一个身份验证方式保护起来。我们要举两个例子。最简单的是基本身份验证方式,然后就是基于表单的身份验证。在第一种情况里,我们尝试访问受保护的数据,将会有一个POP-UP窗口弹出提示你输入你的login和password。在第二种情况里,我们会通过页面的方式来让你通过身份验证。这个页面的内容可以是任意的,这个取决于你要使用怎么样的验证方式了。

基本身份验证方式(BASIC authorization method)

我们假设应用程序在TOMCAT的/webapps/webdemo, 我们要保护所有在admin 子目录里的文件。我们必须打开它的/webapps/webdemo/WEB-INF/web.xml文件,输入下列内容:


<security-constraint>
   <web-resource-collection>
      <web-resource-name>Web Demo</web-resource-name>
      <url-pattern>/admin/*</url-pattern>
   </web-resource-collection>
   <auth-constraint>
      <role-name>testgroup</role-name>
   </auth-constraint>
</security-constraint>
<login-config>
   <auth-method>BASIC</auth-method>
   <realm-name>Web Demo</realm-name>
</login-config>

让我们来看看刚才输入的内容。我们为应用程序创建了一个web-resource-name并映射到login-config 。我们还定义了url-pattern, 它指明你受保护程序的路径。在login-conf中,我们定义了一个BASIC auth-method。

很简单,对吗?不要忘记了,在使改变生效前要停止并重启TOMCAT。

表单身份验证方式(FORM-based authorization method)

对于这种方式,我们仅仅只需要:

  • 修改/webapps/webdemo/WEB-INF/web.xml
  • 创建一个登陆用的JSP页面, 用户将在这里的HTML表单中输入他的登陆ID和密码
  • 创建一个JSP error页面,一旦验证失败,用户将跳到该页面

如果你先尝试使用BASIC验证方式,你只需要改变login-config 为下面那一段代码。否则,你需要输入security-constraint代码段。使用下面的login-config:


<login-config>
   <auth-method>FORM</auth-method>
   <realm-name>Web Demo</realm-name>
   <form-login-config>
      <form-login-page>/admin/login.jsp</form-login-page>
      <form-error-page>/admin/error.jsp</form-error-page>
   </form-login-config>
</login-config>

我们设置表单的auth-method并定义了form-login-config。这个将使得TOMCAT使用 /admin/login.jsp页面来让用户登陆,使用/admin/error.jsp页面来处理登陆失败。

你可以使用任何你想要的出错信息。页面唯一需要的就是下面的HTML表单标签,你要插到页面中:


...
<form method="POST" action="j_security_check">
   <input type="text" name="j_username">
   <input type="text" name="j_password">
   <input type="submit" value="Log in">
</form>
...

布局,风格,或其他所有你喜欢的。这个error页面能够做成任何你想要的。无非就是通知用户,验证失败了。

OK,全部完成了。你需要停止和重启一遍TOMCAT使得改变生效。

© Olexiy Prokhorenko, http://www.7dots.com/resume/
Co-author: Alexander Prohorenko

告别FreeRTOS?手把手带你用NuttX在STM32F4-Discovery上跑起第一个Shell 本文详细介绍了如何在STM32F4-Discovery开发板上从FreeRTOS迁移到NuttX,并运行第一个Shell。NuttX以其完整的POSIX兼容性和模块化架构优势,特别适合复杂网络应用的开发。通过环境搭建、移植配置、调试技巧及POSIX开发实践,帮助开发者高效构建嵌入式系统。 阅读详情

相关推荐

告别转换超时!手把手教你用Allegro2Altium.bat搞定AD21导入Allegro 17.2文件

本文详细介绍了如何使用Allegro2Altium.bat工具解决AD21导入Allegro 17.2文件时的转换超时问题。通过理解转换机制、准备离线环境、执行完整转换流程及高级技巧,帮助工程师高效完成PCB设计文件转换,提升工作效率。

weixin_30378623的博客 421

Web服务器使用基于纯文本表单的身份验证——.net(未完待续)

asp.net 表单验证方式 Asp.net的身份验证有有三种,分别是"Windows|Forms| Passport",其中又以Forms验证用的最多,也最灵活。 根据实际需求把用户分成不同的身份,就是角色,或者说是用户组,验证过程不但要验证这个用户本身的身份,还要验证它是属于哪个角色的。而访问授权是根据角色来设置的,某些角色可以访问哪些资源,不可以访问哪些资源等等。 For...

242

新手必看!华为S5700交换机健康检查清单:从CPU到日志的完整巡检流程

本文为新手网管人员提供华为S5700交换机的健康检查完整指南,涵盖CPU、内存、温度、日志等核心指标的日常维护流程。通过详细的display命令和实用案例,帮助用户快速掌握设备体检技巧,确保交换机稳定运行。

weixin_29251337的博客 237

Struts2的login-config标签,登陆验证

<body style="font-size:30px;"> <div style="font-size:20px;line-height:20px;"> <form action="j_security_check"> 用户名:<input type="text" id="user" name="j_username" /><br/> 密码:<input type="password" id="password"

Felix南南 418

RV1126平台librga图像旋转裁剪实战

本文详细介绍了在rv1126平台上使用librga库实现图像旋转和裁剪的方法。首先解释了librga的基本概念和关键对象,包括源图像、目标图像和操作参数。随后分步骤说明了初始化设置、缓冲区创建、裁剪区域定义(通过坐标和尺寸参数)以及旋转操作(支持常见角度)。提供了完整的示例代码演示如何组合裁剪和旋转操作,并强调了性能优化、错误处理、格式支持等注意事项。通过硬件加速的librga,可以在rv1126平台上高效完成图像处理任务。

hwmxrhx的博客 1543

揭秘N531:这颗不到2毛钱的国产栅极驱动器,如何成为功率开关的“全能搭档”?

本文深入解析了国产栅极驱动器N531如何成为功率开关的“全能搭档”。针对MOSFET和IGBT等电压驱动器件在实际应用中需要大电流实现快速开关的核心痛点,N531凭借±500mA的强劲驱动能力、宽电压供电及高兼容性,有效降低开关损耗,提升系统效率与可靠性。文章通过实战案例与设计指南,阐述了这颗高性价比芯片在简化设计、降低成本方面的显著优势。

z5a6b的博客 620

Web应用中基于密码的身份认证机制(表单认证、HTTP认证: Basic、Digest、Mutual)

表单认证(Form-Based Authentication) 优点:允许开发人员定制登录页面和错误页面。 缺点:不够安全。用户、密码以纯文本形式发送,并且目标服务器未经过身份验证。如果有人拦截传输,则用户名和密码信息可以轻松解码。因此,需结合HTTPS使用。 流程: 1、客户端请求访问受保护的资源(目标URL:http://localhost:8000/resource) 2、如果客户端未经身份...

u012324798的博客 5803

用Arduino Mega2560和TB6612驱动MG513电机,我踩过的坑和最佳实践

本文详细介绍了使用Arduino Mega2560和TB6612驱动模块控制MG513直流电机的实战经验,包括硬件连接、PWM配置、编码器信号处理等关键技巧。通过优化电源系统、信号线布局和软件控制算法,有效解决了电机抖动、转速不稳等常见问题,为机器人底盘和自动化项目提供了可靠解决方案。

weixin_42520573的博客 202

身份证号码验证web服务(完整源码)

已经有18位号的c#程序和15位到18位转换的程序 但还没有一个完整的服务器端验证程序 所以加以总结了一下 写了一个做为web服务 供大家交流使用using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Web;u

星辰的雨 2万+

VS2022跨平台开发实战:SSH远程调试Linux程序全攻略

本文详细介绍了如何使用Visual Studio 2022进行跨平台开发,通过SSH协议远程调试部署在Linux服务器上的C/C++程序。文章提供了从环境搭建、连接配置、项目创建到编译调试的完整实战指南,帮助Windows开发者无缝衔接Linux环境,显著提升问题定位与开发效率。

weixin_28826521的博客 429

本地搭建 GitLab 14.1.0版本CI/CD

GitLab 镜像版本 gitlab/gitlab-ce:14.1.0-ce.0 GitLab Runner 镜像版本 gitlab/gitlab-runner:v14.1.0 搭建此套环境是在一台32G的windows电脑上安装的。 使用dokcer安装。 此外还涉及的软件Docker Desktop,WSL 安装GitLab 首先启动 dockcer,打开WSL 打开后 首先定义GitLab的持久化目录 export GITLAB_HOME=/srv/gitlab 然后运行安装GitLab的命令

知无涯 4491

java身份认证_WEB应用中的基本身份验证和表单身份验证(中文)

Translated by Caiyi0903(Willpower),2004.4.23在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多方式来实现。在本文里,我们不会把所有的验证方法都考虑到,我们的目的是让你学会如何以最简单最方便的验证方法来完成。下面将讨论基本的(...

weixin_34025386的博客 560

如何使用tinyalas接口从usb录音的同时从扬声器播放

3、 以上步骤确认完后,就可以修改tinyhostless.c程序,tinyhostless的本质就是边pcm_read(),边pcm_write();但原本tinyhostless只支持对同一声卡进行操作,所有需要修改其代码,改成录音和播放可支持不同声卡,如果是模拟声卡,有回环测试,可以实现边录边播放,但涉及USB声卡时,就没有现场的类似功能,有时候客户因为硬件特殊性,会有从USB录音的同时从扬声器播放出来的需求,本文简要描述如何使用tinyalsa接口实现该需求;

sdrgtywretyeruet的专栏 971

如何做:将表单身份验证用于 Active Directory

借助于 ASP.NET 表单身份验证,用户可通过在 Web 表单上输入凭据(用户名和密码)来表明自己的身份。在收到这些凭据后,Web 应用程序对照数据源检查用户名和密码以验证用户的身份。 本“如何做”介绍如何通过使用轻量目录访问协议 (LDAP) 对照 Microsoft? Active Directory? 目录服务来验证用户。这里还介绍了如何检索用户所属的安全组和通讯组;如何将此类信息存储在

边城浪子的专栏 2041

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java web 认证方式_JavaWeb应用中的身份验证(声明式)——基于表单的身份认证...

容器管理安全最普遍的类型建立在基于表单的身份验证方式上。通过这样的方式,server自己主动将尚未验证的用户重定向到一个HTML表单。检查他们的username和password,决定他们属于哪个角色逻辑。并检查他们的角色是否有权限訪问正在申请的资源。接着,基于表单的验证使用会话跟踪技术跟踪已经通过的用户。在声明式中,它具有下面的长处和缺点:长处:登陆表单和站点其它网页有一致的页面缺点:若clie...

weixin_32160507的博客 512

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java web之基于表单的身份验证

1.web应用程序安全主要注意什么 ①阻止未授权的用户访问敏感的数据 指定哪些用户才能访问哪些指定资源、用户的身份验证。身份验证简单方式采用post方式提交表单,用户名和密码。身份验证复杂方式采用X. ②防止攻击者从数据传输过程中窃取网络数据 2.什么是声明式安全

sunpy 3168

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring Security04 - 基于表单的登陆身份验证

Spring Security04 - 基于表单的登陆身份验证

qq_43350524的博客 1084

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分是Flask简介,介绍使用Flask框架及扩展开发Web程序的必*基础知识。第二部分则给出一个Web 2.0实例,真正带领大家一步步开发完整的博客和社交应用Flasky,从而将前述知识融会贯通,付诸实践。第四部分介绍了发布应用之前必须考虑的事项,如单元测试策略、性能分析技术、Flask程序的部署方式等。本书采用Python 3.X、MongoDB软件,适合熟悉Python编程,有意通过Flask全面掌握Web开发的程序员学习参考。8.4 使用Flask-Login验证用户身份。

PythonWeb实践 1404

基于表单的身份验证:Spring Security实战教程(附代码)

本文介绍了使用Spring Security实现表单登录功能的完整流程。主要内容包括:表单登录的基本原理和详细步骤,从用户请求受保护资源到验证用户名密码的全过程;如何自定义登录页面以满足项目需求,包括创建HTML页面和配置Spring Security;以及完整的Java代码示例,展示如何搭建项目环境并实现基于表单的身份验证功能。通过本文,读者可以快速掌握Spring Security表单登录的核心技术点,解决常见的用户名密码验证问题,轻松实现安全认证功能。

fykam的博客 1628

ldap java_使用LDAP保护Java EE6中的Web应用程序

ldap java 在上一篇文章中,我们解释了如何在通过传输层安全性(TLS)/安全套接字层(SSL)传输数据时保护数据。 现在让我们尝试了解如何为使用LDAP服务器进行身份验证的基于JEE 6的Web应用程序应用安全机制。 目的: •在JEE应用服务器中配置LDAP领域 •将JEE安全性应用于示例Web应用程序。 使用的产品: IDE:Netbeans 7.2 Java开发工...

最佳 Java 编程 215

单一登录 Web 应用程序的企业级安全系统

如果您的公司在运转方式上与其他绝大多数公司相同,那么您可能拥有许多用于支持公司业务的 Web 应用程序。绝大多数这种类型的应用程序需要采取安全措施,因为您肯定不希望用户随心所欲地进入任何 Web 应用程序。例如,只允许某些用户进入执行摘要决策支持系统,而其他用户则应只允许进入客户信息系统。有可能还有一些使用这些系统的外部用户,他们并不是您的 Microsoft® Windows® 域用户。可以通过

诸子百家 1227

Shiro 入门教程 - Shiro Web 集成

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 928

Java学习笔记_身份验证机制

身份验证机制(authentication):确定一个用户具有自己声称的那个身份        应用程序关心用户是否通过了验证而不关心是通过何种方式进行的验证???        授权(访问控制:authorization):★坚持使用来声明所有角色        用户信息的提供:        首选由容器提供的身份验证:(具有静态特征;效率?)            a.HTTP基本身份验证(B

uhcdivad的专栏 4961
上一篇: 简单SQL语句小结[转]
下一篇: 基于JAVA的WEB服务器工作机制
皮鲁
博客等级 码龄23年 44粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值