问题1 - 我想让用户只在没有电子邮件和生成密码的情况下重置密码.用户通过自定义表单对自己的内部数据库进行验证.然后,我想提示他们输入用户名和安全性q&a.我不知道如何做安全QA所以我决定自定义密码恢复控制.我不希望它发送带有新密码的电子邮件.相反,如果他们获得了用户名和问题,我想将它们发送到密码重置页面.
有没有办法向他们询问安全问题,并通过编写自定义代码或使用预构建组件进行比较.此外,如何重置密码后如何设置密码?
问题2-我正在处理'忘记用户名'.它将首先验证我们的数据库.根据他们输入的内容,我将能够匹配并在表单身份验证数据库中找到用户名和用户ID.我想问他们安全问题,但不知道如何根据他们输入的内容创建哈希来比较用户的aspnet数据库中的内容.有没有办法做到这一点?
谢谢!!!
我正在实施DotNetOpenAuth(OpenID)和Forms Authentication作为我正在构建的网站的身份验证机制.但是,我对我提出的解决方案的部分内容并不满意,尽管我应该和你们一起检查它是如何完成的.
我已将表单身份验证设置loginUrl为login.aspx.这是登录页面背后的代码:
public partial class Login : DataAccessPage {
protected void Page_Load(object sender, EventArgs e) {
if (Request.QueryString["dnoa.receiver"] != "openId") {
openId.ReturnToUrl = Request.Url.ToString();
openId.LogOn();
}
}
protected void openId_LoggedIn(object sender, DotNetOpenAuth.OpenId.RelyingParty.OpenIdEventArgs e) {
var fetch = e.Response.GetExtension();
if (fetch != null) {
string eMail = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
string name = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName);
var usr = db.Users.SingleOrDefault(u => u.EMailAddress == eMail);
if (usr != null) {
// update the name in db if it has been changed …Run Code Online (Sandbox Code Playgroud) ASP.NET的会话状态cookie和表单身份验证cookie是两个单独的cookie有什么好的理由吗?如果我想把它们"捆绑"在一起怎么办?有可能以优雅的方式吗?
现在,我坚持使用以下解决方案,这有效,但仍然很难看:
[Authorize]
public ActionResult SomeAction(SomeModel model)
{
// The following four lines must be included in *every* controller action
// that requires the user to be authenticated, defeating the purpose of
// having the Authorize attribute.
if (SomeStaticClass.WasSessionStateLost/*?*/) {
FormsAuthentication.SignOut();
return RedirectToAction("Login", "Account");
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
@ RPM1984:这是发生的事情:
[HttpPost]
public ActionResult Login(LoginModel loginModel)
{
if (/* user ok */)
{
// ...
Session["UserID"] = loginModel.UserID;
Session["Password"] = loginModel.Password;
// ...
}
else
{
return View();
}
} …Run Code Online (Sandbox Code Playgroud) 我开始学习ASP.NET Forms身份验证,我正在寻找一篇帮助我入门的好文章.
我之前听说ASP.NET Forms Authentication使用了一堆数据库表aspnet_,但是我发现的任何示例都没有显示这一点.
比如我认为这是aspnet_users一张桌子?
我怎样才能生成这些表,这就是我应该做的事情?
我发现的任何教程都告诉我有关将authentication标记添加到web.config中的信息.
我开发了一个将托管在 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 适用于有效用户的最佳方法是什么?
我有一个登录页面,应该可供未经身份验证的用户使用.在我当地的ASP.Net开发服务器上,一切运行良好.但是,在IIS 7上部署时,所有静态内容(如图片和脚本)都不会下载.只有当用户第一次登录时才会返回图片和脚本.服务器为未经身份验证的用户返回HTTP 302.我正在使用表单身份验证和ASP.Net成员资格提供程序.
iis-7 forms-authentication http-status-code-302 asp.net-mvc-3 iis-8
我按照这个例子 - > https://github.com/visionmedia/express/tree/master/examples/auth
工作正常,但我不喜欢他们成功登录或退出时显示内容的方式.
它有其他方式做X或Y一次性用户的身份验证?例
我有一个用于登录的线性表单,很高兴隐藏该div一次性用户的身份验证,但我不能这样做
$(document).ready(function(){
if(req.session.user) { $(.class of teh frm to hide).hide(); }
}
Run Code Online (Sandbox Code Playgroud)
我也试过session.user
一直都告诉我它未定义.我把它放在布局上.
那么如果用户进行身份验证,或者如果用户是管理员,我如何在视图上显示内容?
因为atm我看到它的唯一方法是授权一些路线并通过显示特定内容
req.session.success = 'Authenticated as ' + req.session.user.name
+ ' click to <a href="/logout">logout</a>. '
+ ' You may now access <a href="/restricted">/restricted</a>.';
}
Run Code Online (Sandbox Code Playgroud)
认为它不是要走的路.
javascript authentication forms-authentication node.js express
我搜索了Google和SO帖子,但无法获得解决我问题的任何结果.
我的web.config是:
<location path="~/reports/PayPeriodQtrReport.aspx, ~/reports/PayPeriodDetailReport.aspx">
<system.web>
<authorization>
<allow roles="PayrollReports"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="~/reports/ManifestAnnualReport.aspx, ~/reports/ManifestDetailedReport.aspx">
<system.web>
<authorization>
<allow roles="ManifestReports"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
授权按要求工作(意味着具有"PayrollReports"角色的人员,无法在菜单项中看到Manifest Reports,而具有"ManifestReports"角色的人员无法在菜单项中看到Payroll Reports).
问题:
作为具有"PayrollReports"角色的用户,我可以输入我的URL
http:\\mysite.com\reports\ManifestDetailedReport.aspx并显示该页面.应该显示的是unauthorizedaccess.aspx
同样,作为具有"ManifestReports"角色的用户,我可以输入我的URL http:\\mysite.com\reports\PayPeriodQtrReport.aspx并显示该页面.应该显示的是unauthorizedaccess.aspx
问题: 使用web.config,如何通过键入url来阻止用户入侵页面?
我有一些代码用于创建身份验证票证。创建票证后,我们调用 SetAuthCookie 来设置 cookie,例如:
FormsAuthentication.SetAuthCookie(username, true);
Response.Redirect("/", true);
Run Code Online (Sandbox Code Playgroud)
如果我检查根页面以查看用户是否已通过身份验证,它会返回 false。但是,如果我硬编码用户名并执行以下操作:
FormsAuthentication.GetAuthCookie("jason", true).value);
Run Code Online (Sandbox Code Playgroud)
我得到了适当的 cookie 值。所以,cookie 存在。但是名称和标志没有被修改。关于我的问题可能是什么的任何想法?我正在使用 ASP.NET 4 和 MVC。
我已经能够对会话 cookie 进行此转换,但不能对登录 cookie 进行此转换

我有以下 web.config
<authentication mode="Forms">
<forms name="MyCookie" loginUrl="~/Login/login.aspx" timeout="30" slidingExpiration="true" cookieless="UseCookies" cookieSameSite="None" protection="All" requireSSL="true" defaultUrl="~/Login/DefaultRedirect.aspx" enableCrossAppRedirects="false" path="/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
如果我改为cookieSameSite="None"或cookieSameSite="Lax"严格。我可以看到发生了更改,但它似乎仍然具有在设置为 None 时不发出相同站点值的旧行为
我正在使用 .net Framework 4.7.2 并安装了服务器更新,该更新允许我使用 SameSite=none 进行会话
asp.net ×7
asp.net-mvc ×3
cookies ×2
web-config ×2
.aspxauth ×1
.net ×1
c# ×1
express ×1
iis-7 ×1
iis-8 ×1
javascript ×1
node.js ×1
samesite ×1