我将使用LINQ从头开始使用C#和asp.net构建实体/ MVC框架。
我们选择不使用内置会员资格授权。
我想弄清楚的是,如果我的所有基地都被覆盖,或者我忘记了什么。或者,如果我过度复杂化了。
以下是我设想的方式。
我创建了一个包含用户信息,用户名和密码的表。将其移动到我的代码中的模型。
我在代码中创建了一个身份验证服务。然后,当他们登录时,我将时间添加到他们登录的表中,然后在每个页面上访问我检查时间,如果30分钟已经过去,我将它们记录下来并将它们放回登录页面,否则我将它们带到他们要求的页面。
这是一个可行的方法吗?我真的需要为每个页面控制器添加身份验证检查吗?
基本上是哪个。 Services.Authentication.VerifyLogin()
如果超过30分钟,请将更新表LoggedIn注销为false。如果在30分钟内。将LoggedInTime更新为当前时间。
答案 0 :(得分:2)
我认为你想要的是使用MVC身份验证cookie,而不是检查你的数据库他们登录的时间:
// sign in
FormsAuthentication.SetAuthCookie(username, false);
// sign out
FormsAuthentication.SignOut();
参考。 Custom Authentication and ASP.NET MVC
参考。 http://www.codeproject.com/Articles/578374/AplusBeginner-27splusTutorialplusonplusCustomplusF
另外,这是关于MVC 4中自定义身份验证的好文章:
http://www.codeproject.com/Articles/601687/ASP-NET-MVC-4-Forms-Authentication-Customized
答案 1 :(得分:0)
如果您正在使用MVC,则不必“向每个页面控制器添加身份验证检查”,您只需添加 [授权] 属于需要在控制器中进行身份验证的操作的操作上的属性。
这是一个可能帮助您的授权示例:
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7