亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 回復(fù)在jsp中作http認(rèn)證的方法,(希望版主可以把它貼到專題文章中).txt

?? 這是一本很好的Java開發(fā)書籍
?? TXT
字號:
作者:unixboy_xu
email: unixboy@yeah.net
日期:2000-12-18 15:36:40

最近研究了jsp中作HTTP認(rèn)證的問題,它的工作方式如下:

1、server發(fā)送一個(gè)要求認(rèn)證代碼401和一個(gè)頭信息WWW-authenticate,激發(fā)browser彈出一個(gè)認(rèn)證窗口

2、server取得browser送來的認(rèn)證頭"Authorization",它是加密的了,要用Base64方法解密,取得明文的用戶名和密碼

3、檢查用戶名和密碼,根據(jù)結(jié)果傳送不同的頁面


以下是jsp的片斷,你也可以把它做成include文件。和Base64的加解密的class源碼。
如有興趣可與我聯(lián)系:unixboy@yeah.net

<jsp:useBean id="base64" scope="page" class="Base64"/>
<%
if(request.getHeader("Authorization")==null){
   response.setStatus(401);
   response.setHeader("WWW-authenticate", "Basic realm=\"unixboy.com\"");
}else{
   String encoded=(request.getHeader("Authorization"));
   String tmp=encoded.substring(6);
   String up=Base64.decode(tmp);
   String user="";
   String password="";
   if(up!=null){
        user=up.substring(0,up.indexOf(":"));
	password=up.substring(up.indexOf(":")+1);
   }
   if(user.equals("unixboy")&&password.equals("123456")){
        //認(rèn)證成功
   }else{
        //認(rèn)證失敗
   }
}
%>


//消息加解密class
public class Base64
{
        /** decode a Base 64 encoded String.
          * <p><h4>String to byte conversion</h4>
          * This method uses a naive String to byte interpretation, it simply gets each
          * char of the String and calls it a byte.</p>
          * <p>Since we should be dealing with Base64 encoded Strings that is a reasonable
          * assumption.</p>
          * <p><h4>End of data</h4>
          * We don't try to stop the converion when we find the "=" end of data padding char.
          * We simply add zero bytes to the unencode buffer.</p>
        */
        public static String decode(String encoded)
        {
                StringBuffer sb=new StringBuffer();
                int maxturns;
                //work out how long to loop for.
                if(encoded.length()%3==0)
                maxturns=encoded.length();
                else
                maxturns=encoded.length()+(3-(encoded.length()%3));
                //tells us whether to include the char in the unencode
                boolean skip;
                //the unencode buffer
                byte[] unenc=new byte[4];
                byte b;
                for(int i=0,j=0; i<maxturns; i++)
                {
                        skip=false;
                        //get the byte to convert or 0
                        if(i<encoded.length())
                        b=(byte)encoded.charAt(i);
                        else
                        b=0;
                        //test and convert first capital letters, lowercase, digits then '+' and '/'
                        if(b>=65 && b<91)
                        unenc[j]=(byte)(b-65);
                        else if(b>=97 && b<123)
                        unenc[j]=(byte)(b-71);
                        else if(b>=48 && b<58)
                        unenc[j]=(byte)(b+4);
                        else if(b=='+')
                        unenc[j]=62;
                        else if(b=='/')
                        unenc[j]=63;
                        //if we find "=" then data has finished, we're not really dealing with this now
                        else if(b=='=')
                        unenc[j]=0;
                        else
                        {
                                char c=(char)b;
                                if(c=='\n' || c=='\r' || c==' ' || c=='\t')
                                skip=true;
                                else
                                //could throw an exception here? it's input we don't understand.
                                ;
                        }
                        //once the array has boiled convert the bytes back into chars
                        if(!skip && ++j==4)
                        {
                                //shift the 6 bit bytes into a single 4 octet word
                                int res=(unenc[0] << 18)+(unenc[1] << 12)+(unenc[2] << 6)+unenc[3];
                                byte c;
                                int k=16;
                                //shift each octet down to read it as char and add to StringBuffer
                                while(k>=0)
                                {
                                        c=(byte)(res >> k);
                                        if ( c > 0 )
                                        sb.append((char)c);
                                        k-=8;
                                }
                                //reset j and the unencode buffer
                                j=0;
                                unenc[0]=0;unenc[1]=0;unenc[2]=0;unenc[3]=0;
                        }
                }
                return sb.toString();
        }
        
        /** encode plaintext data to a base 64 string
          * @param plain the text to convert. If plain is longer than 76 characters this method
          *             returns null (see RFC2045).
          * @return the encoded text (or null if string was longer than 76 chars).
        */
        public static String encode(String plain)
        {
                if(plain.length()>76)
                return null;
                int maxturns;
                StringBuffer sb=new StringBuffer();
                //the encode buffer
                byte[] enc=new byte[3];
                boolean end=false;
                for(int i=0,j=0; !end; i++)
                {
                        char _ch=plain.charAt(i);
                        if(i==plain.length()-1)
                        end=true;
                        enc[j++]=(byte)plain.charAt(i);
                        if(j==3 || end)
                        {
                                int res;
                                //this is a bit inefficient at the end point
                                //worth it for the small decrease in code size?
                                res=(enc[0] << 16)+(enc[1] << 8)+enc[2];
                                int b;
                                int lowestbit=18-(j*6);
                                for(int toshift=18; toshift>=lowestbit; toshift-=6)
                                {
                                        b=res >>> toshift;
                                        b&=63;
                                        if(b>=0 && b<26)
                                        sb.append((char)(b+65));
                                        if(b>=26 && b<52)
                                        sb.append((char)(b+71));
                                        if(b>=52 && b<62)
                                        sb.append((char)(b-4));
                                        if(b==62)
                                        sb.append('+');
                                        if(b==63)
                                        sb.append('/');
                                        if(sb.length()%76==0)
                                        sb.append('\n');
                                }
                                //now set the end chars to be pad character if there 
                                //was less than integral input (ie: less than 24 bits)
                                if(end)
                                {
                                        if(j==1)
                                        sb.append("==");
                                        if(j==2)
                                        sb.append('=');
                                }
                                enc[0]=0; enc[1]=0; enc[2]=0;
                                j=0;
                        }
                }
                return sb.toString();
        }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.日韩大片| 精品国精品自拍自在线| 国产丝袜美腿一区二区三区| 一区二区三区 在线观看视频| 成人午夜电影久久影院| 国产亚洲欧美一区在线观看| 狠狠久久亚洲欧美| 精品久久久久久亚洲综合网| 久久99日本精品| 欧美成人免费网站| 国产精品系列在线播放| 久久青草国产手机看片福利盒子 | 国产精品一区二区久久不卡| xvideos.蜜桃一区二区| 韩国v欧美v亚洲v日本v| 亚洲国产精品国自产拍av| 99re亚洲国产精品| 爽爽淫人综合网网站| 亚洲精品一区二区三区四区高清 | 99久久国产综合精品女不卡| 亚洲激情在线播放| 欧美精品久久99| 91精品在线麻豆| 粉嫩蜜臀av国产精品网站| 亚洲中国最大av网站| 精品欧美乱码久久久久久1区2区| 国产成人av影院| 日日夜夜精品视频免费| 成人免费视频国产在线观看| 中文字幕一区二| 欧美xxxxxxxx| 欧美日韩1区2区| 在线观看av一区| www.亚洲激情.com| 国产精品夜夜嗨| 免费观看一级特黄欧美大片| 亚洲天堂久久久久久久| 久久久高清一区二区三区| 欧美日韩aaaaaa| 欧美亚洲自拍偷拍| k8久久久一区二区三区| 国产在线乱码一区二区三区| 美女视频黄a大片欧美| 日韩影院精彩在线| 无码av中文一区二区三区桃花岛| 18欧美亚洲精品| 中文字幕在线一区| 国产精品五月天| 亚洲图片另类小说| 亚洲网友自拍偷拍| 亚洲激情校园春色| 丝袜美腿亚洲一区二区图片| 亚洲444eee在线观看| 日欧美一区二区| 老司机免费视频一区二区| 麻豆国产精品官网| 国产麻豆精品theporn| 国产精品一区一区三区| 99国产精品久久久久久久久久 | 成人动漫视频在线| 欧美日韩第一区日日骚| 精品久久人人做人人爰| 国产欧美一区二区精品性色超碰| 自拍偷拍亚洲欧美日韩| 图片区小说区区亚洲影院| 日韩av一区二区三区四区| 国产一区二区在线视频| 欧美性猛交xxxx乱大交退制版| 欧美军同video69gay| 2014亚洲片线观看视频免费| 亚洲欧美日韩一区二区| 日韩精品国产精品| 91免费视频观看| 久久久久久久综合| 日韩 欧美一区二区三区| 成人激情午夜影院| 精品嫩草影院久久| 亚洲永久精品国产| 国产成人精品亚洲777人妖 | 欧美日韩中文字幕精品| 国产日韩欧美一区二区三区乱码 | 精品久久久久久无| 亚洲国产精品视频| 91久久一区二区| 欧美v日韩v国产v| 中文字幕在线一区| 麻豆91在线看| 欧美久久久久久久久中文字幕| 中文字幕不卡在线播放| 激情文学综合插| 日韩欧美亚洲一区二区| 日本视频一区二区| 91精品国产黑色紧身裤美女| 亚洲二区在线观看| 欧美理论片在线| 日韩在线一区二区三区| 日韩午夜激情av| 国内精品伊人久久久久av影院| 欧美日本免费一区二区三区| 亚洲色图.com| 欧美性xxxxxxxx| 日韩国产高清在线| 日韩你懂的在线播放| 国产乱色国产精品免费视频| 国产日韩精品一区二区浪潮av| 国产91精品一区二区麻豆网站| 国产欧美视频一区二区三区| www.99精品| 丝袜美腿亚洲色图| 久久综合999| 色婷婷av一区二区三区软件| 日韩精品五月天| 久久久久99精品国产片| 91色.com| 国产一区不卡视频| 亚洲永久免费视频| 国产欧美精品一区二区三区四区| av资源网一区| 久久99国产精品久久| 亚洲人被黑人高潮完整版| 欧美一级艳片视频免费观看| 不卡视频免费播放| 毛片一区二区三区| 亚洲精品第1页| 中文av一区二区| 亚洲精品在线观看网站| 欧美日韩亚洲综合一区二区三区| 国产一区二区导航在线播放| 亚洲综合精品久久| 中文字幕av一区二区三区高| 制服丝袜在线91| 在线观看91精品国产入口| av资源网一区| 不卡的av电影| 国产黄人亚洲片| 国产精品 日产精品 欧美精品| 日日夜夜精品视频免费| 亚洲成av人片在线| 18成人在线观看| 久久精品欧美一区二区三区不卡| 欧美剧在线免费观看网站 | 日韩精品一二三四| 亚洲午夜久久久久久久久电影院 | 国产永久精品大片wwwapp| 日本亚洲电影天堂| 婷婷久久综合九色综合绿巨人| 亚洲欧洲综合另类| 亚洲综合免费观看高清在线观看| 1区2区3区国产精品| 亚洲欧美一区二区三区孕妇| 国产精品免费久久久久| 欧美激情综合在线| 亚洲激情自拍视频| 免费三级欧美电影| 国产尤物一区二区| 91视频.com| 日韩欧美电影一区| 国产精品久久久久国产精品日日| 国产精品第一页第二页第三页| 久久―日本道色综合久久| 洋洋成人永久网站入口| 欧美经典一区二区三区| 有码一区二区三区| 国产一区二区成人久久免费影院 | 亚洲一区二区三区在线播放| 午夜精品一区在线观看| 国产乱妇无码大片在线观看| 99视频在线精品| 精品欧美一区二区在线观看| ●精品国产综合乱码久久久久| 午夜影院久久久| 成人精品鲁一区一区二区| 日韩一区二区三区四区五区六区| 2020国产成人综合网| 亚洲精品美国一| 国产麻豆成人精品| 日韩欧美综合一区| 亚洲最新在线观看| 91在线观看一区二区| 欧美精品一区二区不卡| 午夜精品久久久久影视| 91视频免费观看| 亚洲视频一区二区免费在线观看| 麻豆精品一区二区综合av| 欧美情侣在线播放| 亚洲午夜一区二区| 色婷婷av一区二区三区软件| 亚洲国产经典视频| 国产一区二区三区在线观看免费视频| 欧美高清激情brazzers| 亚洲高清不卡在线观看| 91极品美女在线| 亚洲一区二区综合| 欧美在线免费视屏| 视频一区视频二区中文| 在线成人免费观看| 精品亚洲porn| 国产欧美一区二区三区鸳鸯浴 | 一区二区三区波多野结衣在线观看| 国产不卡视频在线观看|