标签: .aspxauth

User.IsInRole不起作用

我有ASP.NET MVC 4应用程序.我使用Simple Membership Provider允许在登录表单下勾选记住我的复选框.如果勾选,则创建persitent cookie .ASPXAUTH,从登录日期起100天后到期.一切正常,除了应用程序的主菜单.

菜单的某些部分仅供管理员用户使用.我用:

@if (User.IsInRole("Administrator")) { @Html.Partial("_MainMenuPartial") }
Run Code Online (Sandbox Code Playgroud)

锁定它们不被普通用户渲染.登录系统后,此方法可以正常工作.当我在一段时间后返回并使用持久性cookie来验证我时,我确实登录了,但是

@User.IsInRole("Administrator")
Run Code Online (Sandbox Code Playgroud)

返回"False",因此我看不到管理员菜单项.同时

@User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

返回正确的登录名和

@User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)

返回"True",证明持久性cookie工作正常.为什么我不能访问用户角色,即使用户通过系统进行身份验证呢?

asp.net-mvc forms-authentication .aspxauth simplemembership

22
推荐指数
7
解决办法
3万
查看次数

尝试使用CURL连接到ASPX站点?

我想尝试登录这个网址:

http://www.kalahari.com/marketplace/default.aspx
Run Code Online (Sandbox Code Playgroud)

提交的两个字段标记为:

ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail
ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试使用的代码:

$username     = 'XXXXXXX';
$password     = 'XXXXXXX';

$loginUrl     = 'http://www.kalahari.com/marketplace/default.aspx';
$cookie  = 'cookies.txt';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $loginUrl );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt($ch, CURLOPT_COOKIEJAR , $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_HEADER, FALSE );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch); //access login page

// Collecting all POST fields
$postfields = array();
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail'] = $username;
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal'] = $password;

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$ret = curl_exec($ch);//Get result after login page. …
Run Code Online (Sandbox Code Playgroud)

php curl login .aspxauth

8
推荐指数
1
解决办法
2万
查看次数

ASP.NET FormsAuthentication cookie值的内容是什么?

ASP.NET FormsAuthentication cookie值的内容是什么?如何查看散列字符串的实际值(如果我有解密密钥)?

asp.net forms-authentication .aspxauth

7
推荐指数
1
解决办法
5159
查看次数

Simplemembership ASPXAUTH cookie在两个单独的Web项目上进行验证

我正在使用SimpleMembership开发一个ASP.NET MVC4项目,它在你登录时会生成一个ASPXAUTH cookie.它似乎工作得很好,但是今天我打开了另一个MVC4项目,只是注意到我已经登录了在.

这非常奇怪,因为新项目实际上没有在数据库中定义任何用户.更令人不安的是,当我点击新项目的"注销"时,它将我从原始网站中删除.

两个站点都在不同的端口上运行,但都在localhost上运行.当检查请求以查看它返回"IsAuthenticated == true"的原因时,我注意到ASPXAUTH cookie被发送到两个站点,并且调试器中cookie的"domain"参数为"null".这让我觉得可能cookie正在生成为"无域"cookie(我不知道这样的事情是否可能,说实话!),并查看了web.config设置以指定域名:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

不幸的是,设置"domain"参数已使cookie停止工作.我已经尝试了所有排列(使用http,没有http,有端口,没有端口等),每次我指定一个域时,浏览器都会收到带有正确指定域名的cookie(我在Chrome开发者工具中检查过它),但随后无法将其发送回后续请求的服务器.

所以,我对这里发生的事情感到很困惑.这是否是由于未在某处正确设置某些内容而导致的安全漏洞?或者,ASPXAUTH cookie将在同一域上的两个不同端口上的两个完全不同的Web应用程序上授权用户,这是完全正常的行为吗?我会在网络主机上测试这个,但遗憾的是我现在无法访问运行MVC4的任何内容.

提前致谢.

asp.net-mvc forms-authentication .aspxauth asp.net-mvc-4 simplemembership

7
推荐指数
1
解决办法
2255
查看次数

渗透测试人员说.ASPXAUTH cookie是不安全的并且正在显示会话数据?

我以为.ASPXAUTH是用于用户身份验证的?任何人都可以确认此cookie是否确实存在安全风险和/或包含会话信息?甚至假设使用它还是一些调试的东西?

asp.net cookies penetration-testing .aspxauth

5
推荐指数
1
解决办法
3564
查看次数

Webclient.DownloadFile().aspx文件无法打开

我第一次使用PowerShell.我已经学会了如何使用webclient下载文件,使用以下代码.

$client = New-Object System.NET.Webclient
$client.DownloadFile( $url, $path )
Run Code Online (Sandbox Code Playgroud)

这似乎很好地适用于我最终要做的事情,即一次从网页下载多个文件.我在一个站点上尝试了这个,该站点的文件格式为.pfva文件,这些文件以PDF格式打开.没问题.这也是受密码保护的网站.

所以转移到我真正想要使用它的网站.同样,一个需要登录的站点,虽然我只是在我的浏览器上登录然后运行webclient.可能为什么我永远不必在命令脚本中传递身份验证....

此站点的文件格式为.aspx文件.它们将作为PDF文件打开.我只需单击该文件,保存或打开,它就可以自然地作为PDF文件工作.但是当我使用webclient.download文件时,它会下载到正确的位置......但是在尝试打开它时出现错误.

"Adobe无法打开文件.它没有正确编码"......这些都是这样的.我现在无法得到这个消息因为我在工作.下载的URL采用以下格式.....

https://www.WebsiteABC.com/ShowDocument.aspx?DocPath=%7e%5cDocument%5cb75c6093-697a-4e59-bc26-fa2eb24f57f7%5cAUTHORIZATION.PDF
Run Code Online (Sandbox Code Playgroud)

为什么不打开!?!有没有解决的办法.任何帮助,将不胜感激.谢谢!.

哦,顺便说一句,我将$ path设置为我计算机上某个目录中的.PDF文件...因为我读到应该提供一个文件的路径,而不仅仅是一个目录.

powershell downloadfile .aspxauth aspxcombobox webclient-download

3
推荐指数
1
解决办法
5867
查看次数

iOS AFNetworking - ASP.NET Web API .ASPXAUTH存储和删除

我正在使用适用于iOS的AFNetworking Framework.我已经将AFHttpClient子类化并将其用作单例,即[TestAFClient sharedClient]

我正在使用需要使用.ASPXAUTH cookie的ASP.NET Web服务API.首先我来认证,接收的cookie .ASPXAUTH响应,然后必须通过该Cookie与每个后续请求.

经过几次测试后,似乎是因为我使用的是单例AFHTTPClient,因此.ASPXAuth cookie仍然存在,因此不需要显式存储cookie.

但是,作为我的应用程序的一部分,我需要在某个时候"注销".

为了注销,清除此cookie的最有效方法是什么?将单例设置为nil并重新初始化它?做点什么setValue:forKey:

另外,我明确存储.ASPXAUTH cookie是否更好?这是否会在必要时到期或自动续订?

谢谢,

罗比

asp.net objective-c .aspxauth sbjson afnetworking

2
推荐指数
1
解决办法
2952
查看次数

如何在请求早期使错误的身份验证 cookie 失效?

设想

我开发了一个将托管在 Windows Azure 中的 MVC 应用程序。在开发过程中,我针对本地数据库和本地用户成员资格服务进行测试。在生产中,应用程序连接 SQL Azure 数据库和云托管的用户会员服务。

有时,我会使用仅存在于我的本地计算机上的用户帐户登录到该网站的本地版本。如果我忘记注销但将机器退出测试模式,事情就会开始出现问题。

问题

我将hosts文件设置为指向应用程序 URL,127.255.0.0以便 Azure 模拟器在本地处理浏览器请求。这也意味着我的测试应用程序和生产应用程序使用相同的主机名 - 一个的 cookie 被视为另一个的有效 cookie。

如果我登录到本地系统,ASPXAUTH则会为该域创建一个 cookie,其中包含本地系统中用户的凭据。如果我忘记注销并将hosts文件切换回正常状态(浏览器请求转到实时应用程序),它会ASPXAUTH向服务器发送相同的 cookie。

由于该用户不存在于服务器上,仅存在于本地,因此任何请求都会Membership.GetUser().Email返回对象空异常。

我想做的事

理想情况下,我可以在请求的早期注入一些代码来检查用户是否存在。就像是:

MembershipUser user = Membership.GetUser();
if(user == null) {
    FormsAuthentication.SignOut();
}
Run Code Online (Sandbox Code Playgroud)

这将自动删除ASPXAUTH无效用户的 cookie。但我该把它放在哪里呢?我开始查看我的控制器 - 所有控制器都继承自一个BaseController类,但即使将此代码放入基本控制器的构造函数中也还不够早。我也查看了Global.asax,但我不确定哪个事件最适合将此操作绑定到。

另外,我什至不确定这是正确的做事方式。如果不是,那么在像我现在这样依赖会员级别之前,确保身份验证 cookie 适用于有效用户的最佳方法是什么?

cookies asp.net-mvc forms-authentication .aspxauth

2
推荐指数
1
解决办法
3841
查看次数

设置/更新aspxauth和asp.net_sessionid cookie的到期时间

我想知道是否可以通过一种方法来设置.NET应用程序,以设置和更新浏览器中的aspxauth和asp.net_sessionid cookie的到期时间?

从我的角度来看,Cookie的到期日期类似于1/1/0001,它告诉浏览器保留它们直到浏览器关闭(我已经使用Chrome观察到了这一点)。我想设置一个明确的时间,但是,我将需要针对每个请求更新该时间。

我正在尝试使用一些代码来做到这一点:

var timeoutMins = Session.Timeout;
if (Response.Cookies.Count > 0)
{
   foreach (string s in Response.Cookies.AllKeys)
   {
       if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
       {
           Response.Cookies[s].Expires = DateTime.Now.AddMinutes(timeoutMins);
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在global.asax End_Request事件中执行此操作,尽管这似乎不是一个好地方,因为它每页触发几次,并且您无权访问sessionstate超时;此外,它仅在登录和注销时触发,因此基本上我可以设置一次,但永远无法更新。这将导致我的用户在登录后15分钟退出,即使他们一直处于活动状态。

似乎有些地方要告诉.net处理此问题?我知道这是一个奇怪的请求,但这是该项目的安全性要求,因此我正在尝试使其正常运行!

.net c# cookies asp.net-session .aspxauth

2
推荐指数
1
解决办法
7867
查看次数

是否可以将.ASPXAUTH用于我自己的日志记录系统?

对于Web应用程序,我从使用ASP.NET成员资格切换到使用我自己的登录系统,它只是执行类似这样的操作来将用户标记为已登录:

Session["UserId"] = User.Id
Run Code Online (Sandbox Code Playgroud)

是否可以将用户ID存储在ASPXAUTH cookie中,捎带其加密,而不是使用标准会话?

目标是登录状态持续时间超过会话,并在浏览器和服务器重新启动后继续存在.

asp.net session asp.net-membership .aspxauth

1
推荐指数
1
解决办法
3567
查看次数