Yar*_*evi 9 c# authentication forms-authentication asp.net-mvc-4
在MVC4应用程序中,在控制器逻辑中,我想检查用户是否已登录.
我应该使用:
User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
要么:
WebSecurity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
据我所知WebSecurity,只是一个包装.我应该使用它还是User.Identity具有不同的功能?
据我所知,WebSecurity只是一个包装器.
这是正确的,两者都是一样的.我们来看看该WebSecurity.IsAuthenticated属性的实现方式:
public static bool IsAuthenticated
{
get
{
return Request.IsAuthenticated;
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们看一下如何WebSecurity.Request实现static属性:
internal static HttpRequestBase Request
{
get
{
return Context.Request;
}
}
Run Code Online (Sandbox Code Playgroud)
最后让我们看一下WebSecurity.Context静态属性的实现方式:
internal static HttpContextBase Context
{
get
{
return new HttpContextWrapper(HttpContext.Current);
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以看到:
WebSecurity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
是相同的:
new HttpContextWrapper(HttpContext.Current).Request.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
反过来又Context.User.Identity.IsAuthenticated与存在空检查略有不同,如果Identity属性为null ,则属性将返回false .
我应该使用它还是User.Identity具有不同的功能?
即使两者是严格等价的,我也会使用User.Identity官方的ASP.NET实现,因为如果明天你决定用其他东西替换简单的成员资格提供者,那么你的代码中要替换的东西要少得多.
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |