我正在创建一个MVC5应用程序,该应用程序从VS2013生成的标准模板开始。这就是Identity 2.0。
只需对我的SQL Server数据库使用"个人用户帐户"选项。
这可能不是正确的术语,但:用户在cookie中的授权有效期是多久?
Chrome工具显示我的域的".AspNet.ApplicationCookie"将在"浏览会话结束时"过期。
MSDN说(如果我在正确的页面上)"默认情况下,身份验证cookie对用户的会话仍然有效。"
如果在用户离开浏览器时重新启动Web服务器,然后点击刷新,他们仍然通过身份验证吗?
除了登录之外,我的所有控制器和api控制器都被[授权]锁定了。
当从Angularjs进行ajax调用时,我是否需要处理未授权并将用户重定向回登录?
很抱歉我的无知,但这个会员资格的东西已经发生了很多变化,以至于大多数博客/答案似乎都引用了我没有的web.config设置。
我的web.config包含以下内容:
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
在App_Start文件夹下的Startup.Auth.cs类上设置的cookie的实际过期时间。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
ExpireTimeSpan = TimeSpan.FromHours(8),
SlidingExpiration = true
});
"validateInterval"有助于在用户执行长任务时更新cookie过期时间,这将避免用户在操作中途注销。
重启网站没有注销用户,我已经测试了这个重启网站托管在azure网站上。
只要您使用默认的控制器操作和默认的mvc路由,未经身份验证的用户将被重定向到上面代码部分"登录路径"中指定的登录页面。
但是,如果我们使用不同的路由插件,单页应用程序的行为会有所不同。在这种情况下,我们必须做一些工作来获得正确的重定向url。(e,g:处理路由的角度)
更新
实际上,我们只需要担心returnUrl
,因为当我们使用url
的http://www.someDomain.com/#/assessments/list/invite
类型时,returnUrl
应该是#/assements/list/inquite,然后用户将被注销,但当他们再次登录时,会重定向到正确的部分。我已经捕获了Url
的哈希部分,并将其分配给Login.cshtml.中客户端的returnUrl
<script type="text/javascript">
document.getElementById('ReturnUrl').value = window.location.hash;
</script>
这将解决这个问题。