【问题标题】:MVC Authentication - Easiest WayMVC 身份验证 - 最简单的方法
【发布时间】:2015-10-29 09:20:53
【问题描述】:

我查看了 ASP.NET Identity,它看起来非常复杂且难以理解。基本上我想知道的是在登录时授权用户的最简单方法,因此 [Authorize] 数据注释将允许他们通过。

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

按照以下步骤操作:

安装以下 NuGet 包

  • Microsoft.Owin
  • Microsoft.Owin.Host.SystemWeb
  • Microsoft.Owin.Security
  • Microsoft.Owin.Security.Cookies

在 App_Start 文件夹中,添加如下所示的 AuthConfig:

public static class AuthConfig
{
    public const string DefaultAuthType = "DefaultAppCookie"; //example
    public const string LoginPath = "System/SignIn"; //example

    public static void ConfigureAuth(IAppBuilder app)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthType,
            LoginPath = new PathString(LoginPath)
        });
    }
}

在项目的根路径下,添加一个如下所示的Startup.cs

[assembly: OwinStartup(typeof(YourPorject.Startup))]
namespace YourPorject
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            AuthConfig.ConfigureAuth(app);
        }
    }

}

验证用户身份(通常在登录操作中):

//user = the user that is loggin on, retrieved from database 
List<Claim> claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, user.Name),
                new Claim(ClaimTypes.Email, user.Email),
                //some other claims
            };

ClaimsIdentity identity = new ClaimsIdentity(claims, AuthConfig.DefaultAuthType);
IAuthenticationManager authManager = Request.GetOwinContext().Authentication;
authManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);

您需要添加一个 ClaimTypes.Role 来授权特定角色。

【讨论】:

  • 感谢您的帖子。一个简单的问题,DefaultAuthType 需要什么?谢谢
  • 它只是一个用于登录操作的 const 字符串...因为在 ClaimsIdentity 对象中使用的身份验证类型的名称必须与 AuthConfig 匹配
  • 在没有 asp.net 身份的情况下,很难找到完整的声明和角色示例。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-03-05
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多