我正在使用ASP.NET登录控件和表单身份验证来获取ASP.NET Web应用程序的成员资格/凭据.它会一直重定向到我的应用程序根目录下不存在的Login.aspx页面.我的登录页面在一个文件夹中.
我想将FormsAuthentication cookie设置为超时但是VIA CODE.我知道我可以在web.config中执行此操作,但我想在数据库中进行配置.这可以通过代码吗?
<system.web>
<authentication mode="Forms">
<forms timeout="50000000"/>
</authentication>
</system.web>
Run Code Online (Sandbox Code Playgroud) 是否可以使用NTLM以编程方式验证用户(在asp.net上)?
我希望控制网站的外观和感觉,我会在其中输入用户输入用户名/密码的表单.然后,我会查询NTLM以验证提供的信息,如果有效,则将它们重定向到虚拟目录?
我想构建一种方法,在会话因不活动而到期时自动将用户重定向到Timeout.aspx.我的应用程序使用表单身份验证,并且在相同的aspx页面中严重依赖于用户交互的更新面板,因此我不想在页面级计时器到期后简单地重定向.出于同样的原因,我不能使用'<meta http-equiv ="refresh"/>'
我想要做的是使用一个名为IsSessionTimedOut()的方法创建一个简单的ajax Web服务,它只返回一个布尔值.我将使用javascript计时器定期调用该方法,如果它返回true,则重定向到Timeout.aspx.但是,我不希望调用此方法来重置会话超时计时器,或者由于服务调用会话永远不会超时.是否有一种干净的方法来避免这种捕获-22?希望有一个简单的解决方案,迄今为止我没有找到.
我有一个Asp.Net MVC webapplication坐在一个仍然主要由delphi管理的网站中.安全性目前由delphi管理,它创建cookie.
已经决定通过提取cookie详细信息并将它们传递给导入的Delphi DLL来验证ASP.Net应用程序中的用户,该DLL根据用户是否有效返回true或false.
我的计划是使用Forms身份验证,但不是将用户重定向到表单而是调用delphi包装器,如果成功,则将用户重定向到原始URL.这样做的好处是,当安全性迁移到.Net时,身份验证框架已经存在,只需要实现更改即可.
public ActionResult LogOn(SecurityCookies model, string returnUrl)
{
try
{
if (model != null)
{
Log.DebugFormat("User login: Id:{0}, Key:{1}", model.UserId, model.Key);
if (authenticator.UserValid(model.UserId, model.Key, 0))
{
FormsService.SignIn(model.UserId, false);
return Redirect(returnUrl);
}
}
...
Run Code Online (Sandbox Code Playgroud)
请注意,SecurityCookies是由delphi生成的cookie中的自定义绑定类生成的 - 这很有效.
对delphi dll的调用也可以.
我必须克服的问题是几乎所有对.Net应用程序的调用都是ajax请求.但是,当用户未登录时,浏览器会因重定向而进行3次调用:1)原始ajax请求2)重定向到〜/ Account/Logon(上面的代码)3)重定向回原来的ajax请求
虽然跟踪回发给客户端的响应,但显示步骤3返回正确的数据,整个过程因尚未确定的原因而失败.只需单击客户端上的刷新即可,因为现在用户已通过身份验证,并且不会重定向到〜/ account/Logon.
注意我的客户端jQuery代码如下:$ .getJSON(requestString,function(data){//对数据执行某些操作});
有没有办法更改窗体身份验证过程,以便在用户未经过身份验证时,而不是重定向到Url,我可以运行其他一些代码?我希望身份验证已经发生在用户的浏览器中完全不可见.
我在很多网站上看到了其中的几个主题,但我仍然遇到了问题.我已经将它添加到我的web.config的底部</configuaration>
<location path="Form.css">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
然而我的css仍然没有为所有用户加载.
这是我的web.config的表单部分
<authentication mode="Forms">
<forms name ="WebApp.ASPXAUTH"
loginUrl="login.aspx"
protection="All"
path ="/"/>
</authentication>
<authorization>
<allow users ="*"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)
还有其他我想念的东西吗?
我们目前正在将.NET Web应用程序迁移到Azure云服务,其中Web层在多个节点上运行(最初为两个).我想知道我们应该如何修改基于表单的身份验证机制以在负载平衡环境中运行?这是我们过去从未需要考虑的因素,因为我们的应用程序始终仅限于一个物理服务器.
目前我们在web.config中定义受保护的文件夹:
<location path="secure-area">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
登录页面中的代码如下所示:
if accountIsValid = true then
FormsAuthentication.SetAuthCookie(sessionID, False)
response.redirect("secure-area/index.aspx")
end if
Run Code Online (Sandbox Code Playgroud)
然后在整个应用程序中检索活动会话,如下所示:
Dim sessionID as string = User.Identity.Name.ToString
Run Code Online (Sandbox Code Playgroud)
据推测,此方法不会自动在多个节点上保持会话状态?我想知道Azure Fabric Controller是否会为我排序所有这些,而不必进行代码更改.也许是一厢情愿的想法!
任何帮助或链接到在线指南将非常感谢!
我正在使用使用表单身份验证的ASP.NET应用程序.但是,如果我关闭除表单之外的所有身份验证方法,我会得到一个
HTTP错误401.2 - 未经授权
尝试浏览任何页面时.但是,启用匿名身份验证可以修复它.是什么导致这种行为?谢谢!
所以我在URL"mysite.com"上有一个站点,在"subdomain.mysite.com"上有另一个站点.用户帐户存储在"mysite.com"中,因此当我需要登录"subdomain.mysite.com"时,我将用户带到"mysite.com",他们输入他们的凭据正常验证它们并确保验证通过domain在cookie中设置cookie,可以在"subdomain.mysite.com" 中使用cookie,如下所示:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".mysite.com";
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
然后我将它们重定向回"subdomain.mysite.com",感谢用户在那里进行身份验证.
一切正常,除了退出时.当用户尝试从任何站点注销时,我按预期删除了身份验证cookie:
FormsAuthentication.SignOut();
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,cookie未被删除,用户仍然保持登录状态.
我试过直接使用Request.Cookies[FormsAuthentication.FormsCookieName]但仍然没有删除cookie .由于某些原因,Chrome非常紧张地坚持使用Cookie:我可以在Chrome的开发者工具中看到它.
我究竟做错了什么?救命!
subdomain forms-authentication logout httpcookie asp.net-mvc-4
我正在尝试使用基本表单身份验证实现ASP.NET MVC5应用程序.所以有我的登录方法:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(string email, string password, bool? rememberMe)
{
if (email.IsNullOrWhiteSpace() || password.IsNullOrWhiteSpace())
{
return RedirectToAction("Index");
}
UserEntity user = new UserEntity() {Email = email, PasswordHash = password};
var userFromDb = _userService.FindUser(user);
if (userFromDb != null)
{
FormsAuthentication.SetAuthCookie(userFromDb.Name, rememberMe.GetValueOrDefault());
var a = HttpContext.User.Identity.IsAuthenticated; //This is still false for some reson
return RedirectToAction("Index", "User");
}
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
但是在重定向这个方法后,它给了我401 Unauthorized错误.似乎也像HttpContext.User.Identity.IsAuthenticated是假的.
你有什么想法/建议为什么会这样,以及如何解决它?
UPD:我也有来自auth的行webconfig概念,所以这不是原因
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" />
</authentication>
asp.net ×7
.net ×2
asp.net-mvc ×2
c# ×2
session ×2
ajax ×1
azure ×1
httpcookie ×1
iis-7 ×1
ldap ×1
logout ×1
security ×1
subdomain ×1
timeout ×1
web-config ×1