如果用户知道直接URL,ASP.NET MVC成员资格似乎不起作用

leo*_*ora 1 membership asp.net asp.net-mvc

我正在扩展默认的asp.net mvc示例..我正在使用它附带的asp.net成员资格提供程序..

问题是,如果我直接访问我的一个网址而不登录它会显示整个页面顶部带有"登录"链接.

我希望它明显重定向到登录页面,如果有人访问任何特定的操作URL并且他们没有登录.

我是否需要在每个控制器的每个操作中放置特定的逻辑来检查"已登录?"

这里有任何最佳实践.

Jai*_*ime 8

您需要使用"[Authorize]"来装饰控制器操作并在Web配置中设置正确的登录页面,因此每当调用装饰的操作时,它都会检查用户是否已登录并重定向到正确的登录页面如果不.

编辑:这是一个如何配置它的例子:

在web.config中...添加:

    <authentication mode="Forms">
        <forms loginUrl="~/Account/LogOn.aspx" timeout="30"/>
    </authentication>
Run Code Online (Sandbox Code Playgroud)

这将指示未经身份验证的用户在点击使用[Authorize()]修饰的控制器时将被重定向到的页面

在你的控制器中(这可以是动作级别或控制器级别,这里显示在动作级别)

public class HistoryController : Controller
{
...
[Authorize]
public ActionResult MyActionThatNeedAuthentication()
{
   ...
}
...

}
Run Code Online (Sandbox Code Playgroud)