一位开发人员和我正在将一个WebForms项目移植到MVC3中,我们是新手。我们已经将WebForms母版页移植到MVC3布局页面,但抛出我们的一件事是登录用户的会话。
在WebForms母版页中,我们检查Session以确保Session(“LoggedInUser”)具有值,如果没有,则重定向到登录页面。
我们不确定如何在MVC3中复制它,我的谷歌搜索已经变得很短。在布局页面中放置这种逻辑似乎有点邪恶,但也许我很疯狂。当然,有一种更好的方法可以做到这一点,而不是在每一种行动方法中都做出这样的检查......如果有人能指出我们正确的方向,我们很乐意潜入并研究。
非常感谢。
答案 0 :(得分:1)
如果您正在使用表单身份验证,则很可能希望使用授权属性来装饰每个控制器或控制器操作,该属性将为您执行该检查并将用户重定向到已配置登录页面
在c#中,你可以这样做:
[Authorize]
public Controller MyController
{
}
您还可以指定用户或组列表作为属性的参数。登录页面在web.config中指定。
答案 1 :(得分:1)
您所要做的就是在所有控制器上添加[Authorize]标签。如果您尚未登录,它会自动将您重定向到web.config中指定的登录页面。
更好的是,您可以创建一个BaseController,其他控制器将从该BaseController继承。
BaseController
[Authorize]
public abstract class BaseConroller : Controller
{
}
其他控制器
public class HomeController : BaseController
{
}
HomeController中的每个操作都将根据您的FromsAuthentication设置进行重定向。
答案 2 :(得分:1)
如果您正在使用表单身份验证,则可以使用User.Identity.IsAuthenticated检查用户是否已通过身份验证。
示例:
if(User.Identity.IsAuthenticated)
{
//Do Stuff
}
else
{
//Redirect to login
}
就个人而言,我使用流畅的安全性来保护我的网站。 http://www.fluentsecurity.net/
希望这有帮助,