精华内容
下载资源
问答
  • 2015-06-16 12:19:59

    一、概述

        前面是扯犊子的,JSP/SERVLET基于HTTP规范,提供了几种安全支持,BASIC、DIGEST、FORM、CLIENT-CERT,本文主要介绍一下FORM的安全支持开发,文末有一个小demo用于展示。

        因为FORM方式比较少用,因此本文介绍的原理点到即止,并没有特别特别深入,见谅。

        更多详情,请参见《JSP/SERVLET核心编程》(新浪微盘,您找PDF的天堂···)


    二、详细

    1. 原理简述

        FROM声明式安全基于表单验证。

        简述:用户想要访问某一个受保护的资源,如果用户未登路,则将用户导向一个特定格式的表单进行身份验证,验证通过则继续访问资源;验证不通过,则将用户导向一个提示页面。

        关键点:

        a. 对受保护资源进行配置。本例是基于URL进行限制保护,因此需要在web.xml中配置受保护的URL;

        b. 特定格式的表单写法。主要是三部分的固定写法,一是表单action必须为j_security_check,用户名输入input的name必须为j_username,用户密码的输入input的name必须为j_password;

        c. 只要用户登录成功,并且支持cookie(会话cookie,跟session搭一块干活的那个cookie:JSESSIONID),那么这个用户名和密码就会被保存到当前用户的session中,后续只要用户的会话cookie存在并且服务器session未过期,则一直验证通过,否则验证失败,更多原理,请往下看;

        FROM验证的安全性基于cookie/session机制的安全性,并且可以配置通过SSL传输,因此安全性还是比较高的,至少比BASIC的安全性高了不止一个等级。之前写的一个小demo,手动实现BASIC验证(不是基于JSP/SERVLET提供的封装了的BASIC,而是其底层原汁原味id实现):点击打开链接

        d. 局限性。用户的身份验证,是基于服务器提供的用户角色,以tomcat为例,所有基于FORM的用户安全验证,都是基于tomcat user的安全验证。也就是说,能够通过用户验证的用户配置,都是属于tomcat_dir/conf/tomcat-user.xml中的<role rolename="xxx"/>配置和<user username="ooo" password="ooo" roles="xxx"/>。因此,基于表单验证FORM的局限性在于程序的可移植性,尽管代码不需要重写,但是不同的服务器的用户规则不一样,因此需要重新配置用户;

    2. demo讲解

        业务逻辑:首页index.jsp有一个超链,访问一个受保护的路径,如果用户未被验证,则自动跳转到认证页面,否则直接访问资源;如果认证失败,则自动跳转到一个失败提示页面。

        整个FORM验证的所有核心在于配置文件web.xml的配置,因此在理解demo业务逻辑的基础上,本节的所有内容将围绕配置文件展开。

    2.1 首页

        即index.jsp,这个页面上有一个超链,用于访问受保护资源,内容如下所示。

    <a href="${pageContext.request.contextPath}/gif">查看群相册</a>

    2.2 配置文件

        此时,因为超链的访问路径“/gif”是受保护的,因此会判断用户是否已经验证通过,判断的条件是根据会话cookie找到对应的session,看session里面是否已经存在j_username和j_password。下面分别来讲解。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>春田花花同学会</display-name>
      <!-- 
      	一下配置都是基于FROM表单身份验证的角度来说明的
      	为了更好的阅读,请重下网上看配置文件,谢谢合作!
       -->
      <!-- 
      	和form-error-page不同的是,当在授权页面进行验证的时候,如果username是一个合法的认证用户
      	即username所在的role存在tomcat-users.xml中,但是这个role不具备访问该资源的权限,则会返回403,跳转到location指定的页面
      	而form-error-page是认证失败:1. 用户名或密码错误;2. username不存在tomcat-users.xml中
       -->
      <error-page>
        <error-code>403</error-code>
        <location>/security/fail.jsp</location>
      </error-page>
      <!-- 
      	login-config:
      		1. 当访问受限资源但是还未验证,则跳转到form-login-page页面,这个页面的编写需要固定的格式(理出为不变格式化的内容,其他可选自填),形如
      		<form action="j_security_check">
      			<input type="text" name="j_username"/>
      			<input type="password" name="j_password"/>
      		</form>
      		如果有密码,则表单最好是post提交
      		2. 当验证失败,即用户名和密码错误或用户不在授权列表中,则直接跳转到form-error-page指定页面
      			这个页面随便编写,目的是提示用户
       -->
      <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
          <form-login-page>/security/login.jsp</form-login-page>
          <form-error-page>/security/logfail.jsp</form-error-page>
        </form-login-config>
      </login-config>
      <!-- 
      	security-role:对应着tomcat-users.xml中的role配置
      	可选,有无均可以,配置主要是方便项目开发的人查看
       -->
      <security-role>
        <role-name>user-auth</role-name>
      </security-role>
      <!-- 安全约束配置:
      		display-name:可选,表示受保护的资源名
      		web-resource-collection:必选,至少一个,配置受保护的资源
      								本处配置的受保护资源为:/gif
      		auth-constraint:授权约束,可选,role-name的value应该是在tomcat-users.xml中配置的<role rolename="xxx"/>
      						如果配置了auth-constraint,但是没有设置value,则表示任何人都不能访问
       -->
      <security-constraint>
        <display-name>R_file</display-name>
        <web-resource-collection>
          <web-resource-name>aiyou_gif</web-resource-name>
          <url-pattern>/gif</url-pattern>
        </web-resource-collection>
        <auth-constraint>
          <role-name>user-auth</role-name>
        </auth-constraint>
      </security-constraint>
      <!-- 首页,这个页面的超链请求到一个受保护的资源路径(/gif,即上文中security-constraint中配置),于是被拦截到一个登陆认证的页面 -->
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    2.3 实现原理

        查看form-lgoin-page页面的请求头和响应头,推测j_username和j_password是保存于session中,但是查看sessionScope是空的,未能进一步验证。但是根据HTTP的迹象来推测,应该是介样的,有大神能进一步解答,请不吝赐教!

    General
    Remote Address:[::1]:8080
    Request URL:http://localhost:8080/web02/j_security_check
    Request Method:POST
    Status Code:302 Found
    Response Headers
    HTTP/1.1 302 Found
    Server: Apache-Coyote/1.1
    Location: http://localhost:8080/web02/gif
    Content-Length: 0
    Date: Tue, 16 Jun 2015 09:54:39 GMT
    Request Headers
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:zh-CN,zh;q=0.8
    Cache-Control:max-age=0
    Connection:keep-alive
    Content-Length:36
    Content-Type:application/x-www-form-urlencoded
    Cookie:JSESSIONID=168CB17F9CF19F3615845B438332B7CD
    Host:localhost:8080
    Origin:http://localhost:8080
    Referer:http://localhost:8080/web02/gif
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
    Form Data
    view parsed
    j_username=wangxinyan&j_password=123
        随即验证通过,进行/gif的资源访问,此时会设置新的会话cookie,实际上在访问授权页面的时候,也会生成新的会话cookie。

    General
    Remote Address:[::1]:8080
    Request URL:http://localhost:8080/web02/gif
    Request Method:GET
    Status Code:200 OK
    Response Headers
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Set-Cookie: JSESSIONID=6F12E8122EB68186270DC626974E24FE; Path=/web02/; HttpOnly
    Cache-Control: private
    Expires: Thu, 01 Jan 1970 08:00:00 CST
    Content-Type: text/html;charset=UTF-8
    Content-Length: 306
    Date: Tue, 16 Jun 2015 09:54:39 GMT
    Request Headers
    GET /web02/gif HTTP/1.1
    Host: localhost:8080
    Connection: keep-alive
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
    Referer: http://localhost:8080/web02/gif
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: zh-CN,zh;q=0.8
    Cookie: JSESSIONID=168CB17F9CF19F3615845B438332B7CD

        基于Form的身份验证,是需要浏览器支持cookie,否则机制会瘫痪。但是整个验证的流程中HTTP透露的信息来看,并没有看到set-cookie除了会话cookie JSESSIONID之外的其他cookie,因此并不是将认证信息存放于cookie中;但是整个流程中都存在会话cookie,因此猜测FORM机制是将认证信息存放于session,每次访问cookie都会带着session id到浏览器,如果访问受保护资源,则浏览器通会过id找到session,session保存了认证信息,因此用户可以直接访问资源。

        并且,为了辅助验证,做了session.invalidate();的测试,发现当session失效以后,必须要重新验证才能访问受保护的资源,因此可以确定验证信息是借助于会话cookie/session机制来实现的,因此其安全性依赖于session和会话cookie的安全性,如果需要进一步提高安全性,在security-constraint中还可以配置SSL进行数据传输,因此,这种验证方式还是比较安全的!


    三、demo下载

        示例demo百度云地址:点击打开链接

        (该demo仅用于展示原理,其中还有很多不完善的地方,仅仅能作为一个参考,谢谢!)


    附注:

        参考资料:《JSP/SERVLET核心编程(第二版)》

        本文如有错漏,烦请不吝指正,谢谢!

    更多相关内容
  • 显示如何将OpenID与ASP.NET MVC表单身份验证一起使用。
  • 在 AppBuilder 混合应用程序中通过 Ajax 请求进行表单身份验证 一个 AppBuilder 混合示例,它使用 ASP.Net 表单身份验证来控制对启用 asmx ajax 的 Web 服务方法的访问。 当表单身份验证会话超时但仅在调用受保护的 ...
  • 关于“如何在ASP.NET中使用表单身份验证来对Windows用户进行身份验证?”的文章。
  • 没有SSL证书的WCF Restful服务身份验证
  • 使用表单身份验证来保护对ASP.NET MVC终结点和WCF服务的访问
  • 我这样做的方式是:0)创建一个基页类,并存储当前页面的url(您可以用多种方法来完成此操作,因此请您自己想象一下):public class MyBasepage:System.Web.UI .Page {公共字符串CurrentUrl {get;...
  • 在本文中,我们将讨论有关在ASP.NET MVC应用程序中实现自定义表单身份验证的信息。
  • 它基于员工管理系统DEMO的解决方案。...用Forms进行身份验证 列出所有用户。 创建用户。 编辑用户。 删除用户。 在创建用户时为用户提供角色 稍后改变角色 根据用户角色显示不同的导航菜单(在布局视图中使用部分视图)
  • 基于表单身份验证看上去复杂,但了解原理后则很简单好用,本例是一个简单示例,却能给你解除所有疑惑。
  • 问题:表单怎么在输入后立即验证,而不是提交后再验证那么不方便(网上搜到的要么是模棱两可,要么是残缺不全…) 方法:鉴于此,小可,水山奇,将其代码补全,加上小可我个人的理解(注释)在上面,仅供后来者少走...
  • 在填写以上信息之后、你要做的就是等待Google Adsense小组的核审、这个时间...表单之后、大概10分钟之后我就收到了Google Adsense小组给我发来的邮件、邮件内容写着、“感谢您发送身份证明、很高兴通知您、该证明符合...

    在自己的网站或者博客上投放Google Adsense广告是目前很多站长不错的赚钱途径、尤其是Google Adsense不仅单价高、而且信誉好、支付稳定等天然优势让国内众多广告联盟黯然失色、在流量有保证的前提下、一般是能拿到美元的、只不过现在单价降了、我几个月了才40几刀、支付最少得100刀、所以这个过程还是比较漫长的呢、不过只要你用心做站、总会有一天会收到Google Adsense的付款的



    先介绍一下什么是PIN码

    PIN码是Google Adsense验证站长联系信息的主要方式、也是确定站长收款资格的验证服务、当Google Adsense账户余额达到10美元时、系统即触发PIN码验证、即自动的以平信的方式向发布商帐户中的中文收款人地址寄出带有PIN码、由于PIN码以平信方式从遥远的美国寄出、其中难免发生意外、有时连续申请几次也无法收到、这样就会影响Adsense账户的收款


    在Google AdsensePIN码的验证之前会在首页有一个提示、在没有通过PIN码验证之前、Google Adsense是不会向你支付你的广告收入的、显示如下

    Google Adsense PIN验证


    个人识别码PIN表单填写

    而中国邮政基本上会把那张小小的卡片丢失、所以很多人无法收到这个PIN码、我也一样无法收到Google Adsense的PIN码、接连申请了三次都无法收到、当我在最后一次申请之后、Google Adsense提示我说如果在4周之内没有收到Google Adsense的来信的话、可以填写一个表单、Google Adsense小组会通过第三方机构来验证、这样就可以绕过PIN的验证、填写界面如下

    个人识别码PIN表单填写

    1、在“姓名”一栏必须填写上您的帐户收款人中文姓名、中间不能有空格、和你上传的身份证名字要对应起来

    2、电子邮件地址Google Adsense会自动默认你创建帐号是的邮件地址

    3、在发布商ID填写你自己的发布商ID、在付款的帐户信息那里会看到你的ID

    4、最后上传你的身份证文件、注意上上传正反面的哦、一定足够清晰、不然会影响Google Adsense小组进行审核


    在填写以上信息之后、你要做的就是等待Google Adsense小组的核审、这个时间一般不会太长、24小时之能会给你答复、如果同时申请的人过多的话、最多也会在48小时之内答复你的、这个效率相对于PIN码的邮寄快得多、当我在填写这个表单之后、大概10分钟之后我就收到了Google Adsense小组给我发来的邮件、邮件内容写着、“感谢您发送身份证明、很高兴通知您、该证明符合AdSense的地址验证要求、您将不再需要输入个人识别码”、最后祝所有哥们都能成功通过Google Adsense的身体验证

    另外我说明一下、由于众所周知的原因Google Adsense现在访问不到了、如果有想了解怎么翻墙访问Google Adsense的哥们可以浏览我的另外一篇文章

    如何翻墙访问google http://dwtedx.com/forum_120.html

    Google Adsense,是目前Webmasters(或Bloggers,以下简称 站长)最受欢迎的广告联盟之一。它的高单价、支付稳定等天然优势让国内众多广告联盟黯然失色。当然,Google Adsense也不是尽善尽美,比如PIN码验证、跨国支付等本地化问题一直让一些站长望而却步,担心辛苦赚来的广告费最后付诸东流,毕竟装进自己口袋里的钱才算是自己的。其中,PIN问题尤其困扰这些在网站(或博客)上投放广告的人。

     

    扫盲贴:什么是PIN码?

    PIN码是Google Adsense验证站长联系信息的主要方式,也是确定站长收款资格的验证服务。当Google Adsense账户余额达到10美元时,系统即触发PIN码验证,即自动的以平信的方式向发布商帐户中的中文收款人地址寄出带有PIN码。由于PIN码以平信方式从遥远的美国寄出,其中难免发生意外,有时连续申请几次也无法收到,这样就会影响Adsense账户的收款。

     

    身份证验证让PIN码成为历史

    虽然Google Adsense已经在国内上线很久,但PIN码问题一直困扰着广大站长,似乎成了谁都无法逾越的高墙。今年02月底,Google中国(谷歌)终于启动了“身份证验证”服务;可以说,“身份证验证”是“PIN码验证”的“变种”,即通过“身份证验证”间接验证PIN码。通过一个在线表单提交Adsense帐户信息和身份证信息,即可完成认证,这样便很好的绕过了PIN码验证。一直为人诟病的PIN码从此进入历史。“身份证验证”服务也成了Google Adsense本地化重要标志之一。

     

    教你顺利通过身份证验证

    自“身份证验证”服务上线后,众多拥有Adsense账号的站长申请了此服务。但一系列的问题又出现了。大约一个月后,谷歌官方根据“身份证验证”服务中出现的诸多问题,不厌其烦的告诉大家注意事项,我也在这里贴给大家,希望“马虎”的站长们能有所注意。

    1.在“姓名”一栏必须填写上您的帐户收款人中文姓名

    2.确保您的AdSense 账户收款人身份证号码正确无误(没有缺位或输入错误

    3.确保您的发布商ID号码正确无误,否则我们将无法为您通过PIN码验证

    4.若账户余额未达到10美元,因无法触发PIN码验证,“身份证验证”也将无法进行。

     

    为了让大家在第一时间了解是否通过验证,谷歌还在互动论坛中开通了身份证验证专区,方便大家了解验证通过信息。

     

    身份证验证失败的解决方法

    身份证验证作为对 PIN 码验证的补充方式,只有在PIN 码已经发出,并且3周后仍无法收到情况下,站长才能申请身份证验证。因此,我们可以这样理解:“身份证验证”服务不是独立的,它是基于PIN码的有效补充。如果想通过“身份证验证”,需至少满足两个条件:

    1.账户余额大于10美元,这是触发PIN码发出的前提;

    2.PIN码已经“在路上”,却由于某些原因,导致PIN码发出三周后仍无法送达。

     

    原则上,PIN码智能发3次,超过次数需与谷歌官方联系。这就是说,基于PIN码验证的“身份证验证”服务原则上也只有3次。超过2次后,如果由于Adsense账号信息与身份证信息不符等因素,“身份证验证”服务也无法成功的话,这时,你就需要设法触发新的PIN码验证,以期借新的PIN码验证机会顺利通过“身份证验证”。做法也相当简单,通过填写在线表单即可获得新PIN码。

     

    如果你还为漫长的PIN码验证而懊恼,如果你因为长时间收不到PIN码验证信件而对Google的诚信产生怀疑,今天,你大可不必再为此担心,“身份证验证”服务可以帮你马上搞定。值得一提的是,“身份证验证”服务知识谷歌本地化的一小步,支付本地化才是核心中的核心。只要合理的解决好一些问题,Google Adsense本地化将成为提升Google Adsense竞争力的又一砝码。


    展开全文
  • 用于身份验证插件,实现基于表单,基本,本地,LDAP,OpenID Connect,OAuth 2.0,SAML身份验证。 请查看其他相关插件: 在启用了插件的情况下下载Caddy: 请表示您对这项工作的赞赏,并 :star: :star: :star: 请在...
  • sharepoint 基于AD的Form表单身份验证

    千次阅读 2014-01-29 16:19:30
     默认情况,MOSS的身份验证是基于AD的...所以出于安全原因的考虑,大家就想到基于Form表单身份验证并将用户的验证的身份信息存储于数据库中,这样就可以解决原来在基于AD认证时带来的不方便!但将MOSS改为Form表
    
    默认情况,MOSS的身份验证是基于AD的,但是基于AD的用户身份验证较适合于企业的内部中使用,若要在外部网络环境下要访问MOSS网站那么基于AD身份验证的方式就不太适用了,因为要基于AD认证必须要开启些不必要的端口号,所以出于安全原因的考虑,大家就想到基于Form表单的身份验证并将用户的验证的身份信息存储于数据库中,这样就可以解决原来在基于AD认证时带来的不方便!但将MOSS改为Form表单身份验证的前提是需要用户自己创建用户信息,这样也挺麻烦的,有没有一种即可以像AD认证那样不用创建用户且还具有Form表单验证的功能呢?答案的是肯定。

      基于MOSS身份验证除了默认的AD认证,基于Form的表单验证,其实还有一种是基于AD的Form表单身份验证,下面就详细介绍下这种身份验证是如何进行的。。。。

      配置基于AD的Form身份验证所需的宿主Sharepoint网站集(如:http://tecpc:8001)是如何创建的相信大家应该都非常熟悉了,在这小弟就在唠叨了,哈哈。。。直接切入正题

      一、配置Web应用程序的里“身份验证提供程序”

      打开Sharepoint管理中心->应用程序管理->验证提供程序   页面并根据需要修改到相应的Web应用程序,如图1

      点击“默认”,打开编辑验证的页面

      1、修改“验证类型”栏处选择“表单”

      2、“匿名访问”栏处,根据用户需要是否启动网站的匿名访问功能

      3、在“成员身份验证提供程序”栏,输入成员身份验证提供程序名称:AspNetActiveDirectoryMembershipProvider ,这个名称须与Web应用程序所对应的Web.Config里的配置一样即可

      4、保存上述所做的配置

      如图2:

     

      在保存完上述所在的配置之后,返回到“验证提供程序”页面会发现原来的“默认”记录行里的成员身份提供程序名称栏处由原来的"Windows"变成了"AspNetActiveDirectoryMembershipProvider",Web应用程序完成上述这些步骤的配置后就完成了将其改为基于AD的Form表单的身份,你可以试着登录该网站,会发现被导航到输入用户名与密码的登录页面,如图3:

     

      你可试着输入用户名与密码,然后进行登录,会发现你已没有权限登录了就算换成administrator的账号来登录,也是报同样的错误没有权限登录,这是因为现在已将网站修改成了基于AD的Form表单身份验证而不是原来集成身份验证了,之前配置的用户信息是基于Windows的。

      下面还需要经过以下两个步骤的操作后即可解决上面所碰到的问题,请继续往下看吧。。。

      1、修改Web应用程序(http://tecpc:8001)的Web.Config

      打开Web应用程序在虚拟目录下对应的8001文件夹-->Web.Config

      在Web.config文件中的<system.web>一节上面,添加如下配置节:

    双击代码全选
    1
    2
    3
    < connectionStrings >
        < add   name = "ADCustomService"   connectionString = "LDAP://moss" />
    </ connectionStrings >

      其中"ADCustomService"是自定义的名称,将会被后面的配置节所用到。“moss”是所配置的AD的名称

      然后,需要在“<system.web>”节里面添加如下配置节:

    双击代码全选
    1
    2
    3
    4
    5
    < membership   defaultProvider = "AspNetActiveDirectoryMembershipProvider" >
     < providers >
    < add   name = "AspNetActiveDirectoryMembershipProvider"   type = "System.Web.Security.ActiveDirectoryMembershipProvider,  System.Web, Version=2.0.0.0, Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a"   connectionStringName = "ADCustomService"   connectionProtection = "Secure"   applicationName = "/_layouts/login.aspx"       connectionUsername = "CONTOSOwssadmin" connectionPassword = "ilove"               attributeMapUsername = "sAMAccountName"           minRequiredPasswordLength = "7"               minRequiredNonalphanumericCharacters = "1"               attributeMapEmail = "mail"         requiresQuestionAndAnswer = "false"  />
     </ providers >
    </ membership >

      注意: 

      1)name属性的值不要写错,要和前面一篇设置提供程序时的名称相同。

      2)connectionStringName的值要和上一步ConnectionStrings节中设置的名称相同。

      3)attributeMapUsername、attributeMapEmail的值都是AD中相应的属性名称。

      4) connectionUsername和connectionPassword的值是连接使用的账号与密码。

      5) minRequirePasswordLength和minRequiredNonalphanumericCharacters都是组策略的设置,要根据实际的设置填写。

      添加完成后,保存所做修改。

      2、修改Sharepoint管理中心应用程序的Web.Config,及修改8001端口的Web应用程序的策略

      Sharepoint管理中心应用程序的Web.Config的配置与上面的Web.Config配置的代码是一样,在这里我不就再贴出了,这里着重介绍下如何修改Web应用程序的策略以便添加用户权限。

      打开Sharepoint管理中心->应用程序管理-->Web 应用程序策略   根据需要修改Web应用程序,如图4:

     

      单击“添加用户”-->在选择区域处选择“默认”-->下一步-->在选择用户栏处选择相应的用户名,并在选择相应的权限-->完成,如图5:

     

      此时,在“Web的应用程序策略”界面中,我们就可以看到默认区域添加了一个完全控制的管理账户。同时,通过账户名称前缀,可以看出该账户是由我们的Provider提供的,这时再次访问网站输入用户名与密码后即可登录网站中。

      完成了这两步骤的配置后,就可以解决前面所碰到的登录时没有权限的问题了。

    展开全文
  • 主要介绍了AngularJS中实现用户访问的身份认证及表单验证功能的方法,Angular是Google开发的一款浏览器端的高人气JavaScript框架,需要的朋友可以参考下
  • 1.示例代码完整可用,具备在MVC使用表单身份验证,角色授权功能。 并且支持cookie加密。 2.为了方便教学,整个项目末连接数据库,将用户名及角色名称写死了。使用时,自行调用数据库即可。 3.实际使用时将cookie角色...
  • 基于表单身份验证

    2020-01-22 12:16:08
    目前用户的认证多半是基于表单的认证,基于表单的认证一般会使用 Cookie 来管理Session(Session会话,Session代表着服务器和客户端一次会话的过程,直到Session失效(服务端关闭)或者客户端关闭时结束)。基于表单...

    目前用户的认证多半是基于表单的认证,基于表单的认证一般会使用 Cookie 来管理Session(Session会话,Session代表着服务器和客户端一次会话的过程,直到Session失效(服务端关闭)或者客户端关闭时结束)。基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的。

    但鉴于 HTTP 是无状态协议, 之前已认证成功的用户状态无法通过协议层面保存下来。 即无法实现状态管理, 因此即使当该用户下一次继续访问,也无法区分他与其他的用户。于是我们会使用Cookie 来管理 Session,以弥补 HTTP 协议中不存在的状态管理功能。
    在这里插入图片描述
    简单的来说就是,用户在登录的时候,会在Web服务器中开辟一段内存空间Session,用于保存用户的认证信息和其他信息,用户登录成功之后会通过Set-Cookie的首部字段信息,通知客户端保存Cookie,而这Cookie保存的就是服务器端Session的ID,下次请求的时候客户端会带上该Cookie向服务器端发送请求,服务器端进行校验,如果Session中保存的有该ID的Session就表示用户认证通过,否则失败!
    在这里插入图片描述
    Session 是存储在Web服务器(例如:Tomcat)中的,并针对每个客户端(客户),通过SessionID来区别不同用户的。Session是以Cookie技术或URL重写实现,默认以Cookie技术实现,服务端会给这次会话创造一个JSESSIONID的Cookie值。

    但是这样存在一个显著的问题:在集群模式下,通过Nginx负载均衡的时候,如果有一个用户登录的时候请求被分配到服务器A上,登录成功后设置的Session就会存放在服务器A上了,在服务器B上没有该用户的Session数据;当用户再次发起一个请求的时候,此时请求如果被分配到服务器B上,则就不会查询到该用户的登录状态,就会出现登录失败的情况!

    很容易想到的解决方案是将多个Web服务器上存储的Session统一存储到某一存储介质中,保证进集群中的每一台机器都可以看到所有相同Session数据,这里的同步体现在所有的Session存储在同一的存储介质里边。

    幸运的是,常用的Tomcat容器已经为我们提供了一个接口,可以让我们实现将Session存储到除当前服务器之外的其他存储介质上,例如Redis等。
    在这里插入图片描述
    Spring Session的本质就是通过实现Tomcat提供的这个接口将Session存储到Redis中,以此来实现Session的统一存储管理。使用Spring Session的方式来实现Session的同步是一件相对比较麻烦的事情,我们虽然使用Redis来进行同步,但是Redis并不是100%可靠的,我们需要对Redis搭建集群、进行主从同步复制、进行持久化等,显然这是一件很复杂的事情。

    展开全文
  • 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie  1):从数据库中查出用户名和一些必要的信息,并把...
  • WEB应用中的基本身份验证和表单身份验证在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多...
  • 在 SharePoint 2010 中设置基于表单身份验证 (FBA) 时,我发现自己真的对不断修改配置文件厌烦了。与以前版本相比,现在需要做更多的工作,因为现在我们需要修改一个附加的 web.config 文件 - 针对 STS。如果您不...
  • 设置基于表单身份验证公用计算机 Cookie 超时值 1.在客户端访问服务器上,使用 Exchange 管理员帐户登录,然后启动注册表编辑器 (regedit)。 2.在注册表编辑器中,找到以下注册表项:HKEY_LOCAL_MACHINE\...
  • next-form-auth:身份验证登录和注册表单前端
  • 自定义表单验证

    2015-05-13 19:46:59
    简单的js表单验证 function validatename(){ var userN=document.myform.userName.value; if(userN.length==0){ document.getElementById("nerror").innerHTML="请输入用户名!"; return false; } ...
  • WildFly 8.2.0.Final 和 Primefaces 5.1 基于 JDBC 领域和表单身份验证 这篇博文的来源: :
  • ASP.NET在IE9,IE10,IE11中Form表单身份验证失效问题解决方法已经研究出解决方案. IE9: 在web.config中的forms中增加name=”.xCookie”属性即可。IE10或IE11:在web.config中的forms中增加cookieless=”UseCookies”...
  • ASP.NET身份验证——Form身份认证

    千次阅读 2015-11-03 11:49:26
    细说ASP.NET ...在开发ASP.NET项目中,我们最常用的是Forms认证,也叫【表单认证】。 这种认证方式既可以用于局域网环境,也可用于互联网环境,因此,它有着非常广泛的使用。 这篇博客主要讨论的话题是:
  • 缓解历史攻击的攻击DoS DoS涉及DDoS所有蛮力攻击零时差攻击社会工程Rainbow Tables密码破解工具密码列表字典攻击时间延迟任何托管服务提供商任何CMS或自定义网站无限尝试频率搜索攻击HTTP基本身份验证HTTP摘要身份...
  • 该软件包使Web开发人员可以快速将Duo的交互式,自助式,双重身份验证添加到任何Web登录表单中,而无需设置辅助用户帐户,目录同步,服务器或硬件。 位于js目录中的文件应由您的网络服务器托管,以包含在网页中。 ...
  • 这是一个示例 Meteor 应用程序,用于混合身份验证、TinyTest、设置、模型、挂钩和表单。 此应用程序是一种将用户请求存储在表中的表单,管理员使用简单的工作流程管理请求,管理员可以在其中设置无序的“状态”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,000
精华内容 20,400
关键字:

表单身份验证

友情链接: XBCLNE.zip