我有一个使用基本身份验证(用户名/密码)的网站.
为什么以下代码不起作用?当我运行它时,Web应用程序将我带到登录控制器,而我期望它应该已经过身份验证,因为我正在填充凭据.换句话说,我试图确认如何在.NET中确认我的winforms HttpWebRequest,以便它将自动化身份验证过程.我假设NetworkCredential是应该这样做的.net类?或者在.NET中,您是否期望有一些手动两步过程需要自己实现?
这是代码:
// Create a new webrequest to the mentioned URL.
var uri = new Uri("http://10.1.1.102:3000/download/sunset");
var myWebRequest = (HttpWebRequest)WebRequest.Create(uri);
myWebRequest.PreAuthenticate=true;
var networkCredential=new NetworkCredential("test", "asdfasdf");
myWebRequest.Credentials=networkCredential;
var myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
Console.Out.WriteLine("STATUS = " + myWebResponse.StatusCode);
var stream = myWebResponse.GetResponseStream();
var reader = new StreamReader(stream);
string text_read = reader.ReadToEnd();
Console.WriteLine(text_read);
DisplayHtml(text_read);
reader.Close();
stream.Close();
myWebResponse.Close();
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用下面的代码来验证远程服务器的用户.如果我给出正确的用户名和密码,没有问题,因为身份验证正在发生,我从服务器获得响应.
但是当我提供错误的凭据时,会以递归方式调用此方法,因此我无法解决此问题.
请帮助我,如何打破这一点,以便我能够显示身份验证失败的警报消息.
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username"
password:@"password"
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到一个很好的详细教程,使用sskeychain来存储和检索用户名和密码,并在UIWebView中进行基本身份验证?其次,就基于Web的应用程序存储和使用身份验证所需的方法而言,我是否在正确的轨道上?(见下面的解释.)
我找到了一些使用不同方法的教程:
根据以下其他SO问题的建议,建议使用sskeychain以便更轻松地使用钥匙串来存储身份验证参数.
我的计划是按照建议在钥匙串中在设备上本地存储用户名和密码,并使用基本身份验证通过UIWebView连接到我的PHP代码.是否有经验丰富的iOS开发人员推荐的有关用户身份验证主题的xcode/Obj-C新手的详细分步教程?
Apple文档似乎不太有用.它既可以是简单的销售术语,也可以是方法和参数的头部描述,没有很多有用的例子.
更新:
我最后只使用NSUserDefaults在本地存储用户名和密码,然后使用AFNetworking库进行身份验证.如果这些是不明智的,我会欢迎一个答案,为更好的方法提供指导.
我已将我的项目升级到Phonegap 1.4到Cordova 1.8.1.当我在Phonegap 1.4中传递无效的用户名/密码时,Ajax对webservice的调用与401 Unauthorized工作正常.
升级后,它不起作用,我没有得到任何响应和Web服务留在那里.
如果将代码更改为Phonegap 1.4,它将开始工作.
请帮忙
在我的RoR应用程序中,我需要使用基本身份验证来保护页面,并且我希望每次用户链接到该页面时都要求输入凭据。
所以我在操作之前添加了一个过滤器,如下所示:
before_filter :request_confirm, :only => [:delete_device]
Run Code Online (Sandbox Code Playgroud)
过滤方法是:
def request_confirm
user = User.find_by_id(session[:user_id])
authenticate_or_request_with_http_basic do |nick, pass|
nick == user.nickname and pass == user.password
end
end
Run Code Online (Sandbox Code Playgroud)
没关系,但是只有第一次,因为Rails会保存插入的数据,因此接下来的几次过滤器将被执行,但凭据不会询问。
我不知道凭据保存在哪里。。
我需要在Wordpress主站点之外的某些网页上设置密码保护.用户更愿意使用他们在Wordpress中已有的用户名和密码.
显而易见的解决方案似乎是使用Apace模块进行基于Mysql的身份验证:mod-auth-mysql.
但这似乎不可能,因为Wordpress使用Phpass密码加密,而mod-auth-mysql不支持.
有没有办法解决这个限制?
wordpress .htaccess basic-authentication phpass apache-modules
大家好 !
所以在Laravel 4中我们可以做到
Route::filter('auth.basic', function()
{
return Auth::basic('username');
});
Run Code Online (Sandbox Code Playgroud)
但现在这是不可能的,而且文档并没有给出如何做到的线索.那么有人可以帮忙吗?
谢谢 !
我试图使用基本身份验证连接到我的服务器,但是当我设置Authorization标头时,它会导致getInputStream抛出fileNotFound异常.
这是相关代码:
URL url = new URL(myurl);
//set up the connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);//this is in milliseconds
conn.setConnectTimeout(15000);//this is in milliseconds
String authHeader = getAuthHeader(userID,pass);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setRequestProperty("authorization", authHeader);
//starts the query
conn.connect();
int response = conn.getResponseCode();
is = conn.getInputStream(); //throws the fileNotFound exception
Run Code Online (Sandbox Code Playgroud)
这是抛出的异常:
java.io.FileNotFoundException: http://<myIPaddress>/login/
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我发现只有当我尝试将请求属性设置为"授权"或"授权"或该单词的任何变体时,才会抛出fileNotFound异常.如果我将它设置为"content-type"或"authosodifjsodfjs"(随机字符串),则不会抛出它,如下所示:
conn.setRequestProperty("content-type",authHeader)//no exception thrown
conn.setRequestProperty("authosodifjsodfjs",authHeader)//no exception thrown
Run Code Online (Sandbox Code Playgroud)
如果我没有设置此标头,我可以使用此代码连接到服务器,并获得我期望的正确的访问被拒绝消息.如果我使用python的"请求"模块,我也能够连接到服务器并正确登录,因此它不是服务器的问题.
所以我的问题如下:
1)在将请求属性设置为"授权"时,我做错了什么?如何正确设置auth标头?
2)如果这是HttpURLConnection的错误,我该如何提交错误报告?
谢谢.
编辑:建议切换:
conn.setRequestProperty("Authorization", authHeader);
Run Code Online (Sandbox Code Playgroud)
至:
conn.addRequestProperty("Authorization", authHeader);
Run Code Online (Sandbox Code Playgroud)
这并没有解决问题.它仍然抛出同样的例外.
编辑:仍然不确定为什么"授权"和"授权"导致fileNotFounExceptions,但使用所有大写似乎工作正常.这是闪亮的新工作代码:
conn.setRequestProperty("AUTHORIZATION",authHeader);
Run Code Online (Sandbox Code Playgroud)
所以看起来它需要全部上限."HTTP_"将自动添加到此标头的前面,因此服务器将看到的标头是"HTTP_AUTHORIZATION",它应该是它.
android filenotfoundexception httpurlconnection basic-authentication
传递URL中编码的用户名和密码时,例如: https:// Aladdin:OpenSesame@www.example.com/index.html
客户端实际上是通过Authorization标头发送的吗?对于这种URL编码,服务器端需要什么样的处理?
我们已经通过基本身份验证保护了Angular网络应用。后更新我们的应用程序从7角到8.0,我们不再要求在Safari浏览器证书和下面的错误出现在控制台:
[Error] Blocked https://*/runtime-es2015.4f263ec725bc7710f1f5.js from asking for credentials because it is a cross-origin request.
[Error] Blocked https://*/main-es2015.6fa442dd5c5a204f47da.js from asking for credentials because it is a cross-origin request.
[Error] Blocked https://*/polyfills-es2015.fd951ae1d7572efa3bc6.js from asking for credentials because it is a cross-origin request.
Run Code Online (Sandbox Code Playgroud)
在Firefox和Chrome中,该应用仍然可以正常运行。Safari版本为12.1.1。
有谁知道Safari存在什么问题?