我正在创建一个MVC5应用程序,从VS2013生成的标准模板开始。 这是Identity 2.0。
只对我的SQL Server数据库使用“个人用户帐户”选项。
这可能不是正确的术语,但是:用户在Cookie中的授权有效期是多久?
Chrome工具会显示我的域名“.AspNet.ApplicationCookie”过期“浏览会话结束时”。
MSDN说(如果我在正确的页面上)“默认情况下,身份验证Cookie对用户的会话仍然有效。”如果在用户离开浏览器然后点击刷新时重新启动网络服务器,它们仍然经过身份验证会怎样?
我的所有控制器和api控制器都被[授权]锁定,除了登录。
当从Angularjs进行ajax调用时,我是否需要处理Not Authorized并将用户重定向回登录?
对不起我的无知,但这个会员资格已经花了很多次,大多数博客/答案似乎都是指我没有的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>
答案 0 :(得分:2)
实际上在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
});
&#39; validateInterval&#39;如果用户执行将避免用户在操作中间注销的长任务,则有助于更新cookie到期时间。
重新启动网站没有注销用户,我已经测试了这个在azure网站上托管的重新启动网站。
只要您使用默认控制器操作和默认mvc路由,未经过身份验证的用户将被重定向到上面代码部分“LoginPath&#39;”中指定的登录页面。
但是如果我们使用不同的路由插件,单页应用程序的行为会有所不同,在这种情况下,我们必须做一些工作才能获得正确的重定向URL。 (例如,g:处理路由的角度)
<强> 更新 强>
实际上我们只需要担心returnUrl
,因为当我们使用http://www.someDomain.com/#/assessments/list/invite
类型url
时,returnUrl
应该是#/ assessment / list / invite,那么用户将被注销,但在再次登录时将被重定向到正确的部分。我已经捕获了Url
的哈希部分,并在Login.cshtml中分配给客户端的returnUrl
。
<script type="text/javascript">
document.getElementById('ReturnUrl').value = window.location.hash;
</script>
这将解决这个问题。