我有使用 asp.net mvc 2 创建的简单 jQuery Mobile 站点,并使用基本表单身份验证来授予对该站点的访问权限。
该应用程序是一个简单的工作日记,允许区域经理查看有关分配给区域团队的当前问题的详细信息。
当移动连接可用时,该应用程序运行良好,但由于缺乏信号,我们需要研究使应用程序的核心离线可用的可能性。我一直在研究使用 html 5 让应用程序离线的可能性,但找不到任何有关验证用户身份的信息。
该应用程序非常基本,本质上有两个不同的列表屏幕,可深入了解工作详细信息。
1. Login
1.1 Job List
2. Job Details
1.2 Team Diary
2. Job Details
Run Code Online (Sandbox Code Playgroud)
我相信创建数据的离线版本非常容易,该版本允许在连接不可用时浏览日记,但我找不到有关在访问允许的页面之前需要身份验证的网站的任何信息离线。
这些内容不是敏感数据,但显然客户不希望任何人能够在面向公众的网站上浏览工作日记。
在可能离线使用的站点中对用户进行身份验证的首选方式是什么?
我使用setIntervalajax 调用来每分钟检查新消息。这个调用扩展了身份验证cookie(因为我将slidingExpiration设置为true),因此身份验证永远不会过期。
这个问题有类似的问题,但解决方案是针对 .net 类项目的,我不知道如何将其应用到我的 MVC 项目中。
如果解决方案采用属性的形式,就像[DoNotExtendAuthentication]我可以执行操作一样,那就太好了,但任何帮助都会受到赞赏。
我有一个托管在 IIS 7.5 上的 ASP.NET 网站,如下所示:
我有“customwebsite.com”作为网站,其中有两个 Web 应用程序 - uk 和 us - 这样我就可以通过 customwebsite.com/uk 和 customwebsite.com/us 访问这些应用程序。
customwebsite.com 目录没有任何 web.config,并且只有两个用于 Web 应用程序 us 和 uk 的文件夹。
美国和英国的 Web 应用程序都有各自的 web.config 并指定了表单身份验证,如下所示:
<authentication mode="Forms">
<forms loginUrl="/static/login.aspx" name="login" timeout="20"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
在/static这个路径下,有一个web.config,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我点击我们应用程序的根 URL 时,网站会正确加载,但如果我从英国加载,则会收到如下错误:

我已经检查了文件夹安全性,所有必需的用户都已被授予权限,并且对于美国和英国的应用程序都是相同的。
我检查了 IIS 日志,下面是失败时请求的响应代码: 401 0 0 1519 296
有人可以帮我解决这个问题吗?
我的问题的部分答案似乎分布在多个帖子中,但到目前为止,将其放在一起对我来说还没有奏效,所以我希望当这篇文章得到解答时,它将形成更完整的指南
我有一个 ASP.NET Webforms 应用程序 (W1),我想在一段时间内开始升级到单独的 MVC 应用程序 (M1)。包含W1的解决方案已升级到4.5,并在解决方案中创建了M1。W1 使用 ASP.Net 会员框架。
在M1中,我将Authorize属性添加到HomeController中的About页面
[Authorize]
public ActionResult About()
我在 M1 中添加了一个指向“关于”页面的链接,该链接源自 W1 中要求用户登录的页面。
我希望用户能够登录到 W1,单击指向 M1 关于页面的链接并自动登录到 M1。
我已使用此处概述的方法从 W1 中提取了validationKey 和decryptionKey 。尽管这似乎是一个合乎逻辑的步骤,但我不确定是否需要这样做,因为不同的密钥仍然允许用户登录 W1。
第2步按照此处和此处的信息,并经过大量调试后,我修改了项目的 Web.config 文件部分,如下所示;
对于 W1:
<system.web>
<authentication mode="Forms">
<forms name="WRSAUTH"
loginUrl="~/Account/Login.aspx"
defaultUrl="Default.aspx"
protection="All"
timeout="60"
path="/"
domain=".localhost"
requireSSL="false"
slidingExpiration="true"
cookieless="UseCookies"
enableCrossAppRedirects="false" />
</authentication>
<machineKey validationKey="<ValidationKey>"
decryptionKey="<DecryptionKey>"
validation="SHA1"
decryption="AES"/>
<compilation debug="true" targetFramework="4.5">
<httpRuntime maxRequestLength="12288" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
对于 M1:
<system.web> …Run Code Online (Sandbox Code Playgroud) 我有ASP.Net 2.0网站,SQL Server作为数据库,C#2005作为编程语言.该网站几乎完成,所有链接都运行正常.但我想阻止普通用户打开几页.当任何用户单击这些特定链接时,将打开另一个包含ASP登录控件的页面.用户必须提供有效的用户标识和密码才能显示指向限制性页面的链接.但作为一个新手,我不知道如何利用ASP登录控件的全部功能.因为,如果用户知道受限页面的确切URL,则他/她可以绕过登录控件并通过在地址栏中键入URL来直接访问这些页面.我想阻止这个.如果用户直接在地址栏中输入网址,我希望页面本身应该检查,
我该如何实现这个功能?
谢谢.
Lalit Kumar Barik
我正在asp.net网站上实现简单身份验证。使用基本的表单身份验证几乎是完美的:我将auth模式设置为Forms,并在web.config中有一个简短的凭据部分,并使用一个简单的Login aspx页面,该页面使用FormsAuthentication.Authenticate()和FormsAuthentication.RedirectFromLoginPage()。
但是,我想为某些客户端IP地址添加其他检查。如果请求来自某个IP地址,我想自动授权该请求,而不是将该请求重定向到“登录”页面。有没有简单的方法来扩展或覆盖内置表单AuthenticateRequest?我的另一个选择是创建自己的HttpModule来执行此操作,但是,如果我这样做,似乎会丢失FormsAuthentication方法的良好功能以及它们与凭据部分的交互。有什么建议么?
因此,在我成为ASP.NET的过程中,我遇到了一个问题.
我正在登录.我通过添加一个CSS文件为它添加了一些样式,经过一段时间我让它看起来好多了.此后我添加了ASP身份验证表单 - 实际上效果也很好,但如果您没有登录,则不使用CSS.
一旦我登录并收到cookie,我就可以回到登录页面,一切都很好看.但只要我没有"登录",页面看起来好像没有使用CSS.
我怎样才能解决这个问题?
如何在没有登录控制的情况下使用表单身份验证.我不想在我的站点中使用asp.net登录控件.但是我必须实现表单身份验证并验证我的数据库中的用户.
asp.net forms-authentication asp.net-membership custom-membershipprovider asp.net-authentication
我正在尝试确定如何在表单身份验证下配置对Web API控制器服务的访问.如果我添加授权配置以通过添加授权元素拒绝所有匿名用户:
<authorization>
<! - 拒绝所有匿名用户 - >
<deny users ="?" />
</ authorization>
只能按预期访问登录页面.但我还想访问从控制器返回的列表.我将[AllowAnonymous]属性添加到一个简单的服务,该服务返回用于填充下拉菜单的值.例如:
namespace WebAPI.Controllers
{
public class RegisterController : ApiController
{
[AllowAnonymous]
public List<ListElement> GetActivitiesList()
{
List<ListElement> li = new List<ListElement>();
li.Add(new ListElement() { Id = 1, Text = "Item 1" });
li.Add(new ListElement() { Id = 2, Text = "Item 2" });
li.Add(new ListElement() { Id = 3, Text = "Item 3" });
return li;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将controllers目录添加到web.config中允许的列表中:
<location path ="Controllers">
<system.web>
<authorization>
<allow users …
我对.NET和安全性都很陌生.我选择实现Forms身份验证(如果我应该使用其他东西,请更正我).从我在互联网上收集到的内容,我做了以下操作,但它不起作用:
Web.config文件
<authentication mode="Forms">
<forms loginUrl="~/Home/Index" timeout="30" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
HTTPPost ajax登录方法:
[HttpPost]
public ActionResult Login(LoginInputModel loginModel)
{
if (ModelState.IsValid)
{
var success = UserService.Login(loginModel.Password, loginModel.Email);
if (success)
{
return Json(new { Url = Url.Action("Index","Home") });
}
loginModel.ErrorMessages = "Failed to log in with these credentials. Please try again.";
return PartialView("Widgets/Login/_LoginInput", loginModel);
}
return PartialView("Widgets/Login/_LoginInput", loginModel);
}
Run Code Online (Sandbox Code Playgroud)
使用UserService类中的实际登录代码:
public static bool Login(string password, string email)
{
var user = Connector.GetUserByCredentials(password, email);
if (user == null) return false;
FormsAuthentication.SetAuthCookie(email, false); // this …Run Code Online (Sandbox Code Playgroud) asp.net ×7
html ×2
ajax ×1
asp.net-mvc ×1
css ×1
iis-7.5 ×1
machinekey ×1
sessionid ×1
verification ×1
web-config ×1