gpt4 book ai didi

asp.net - 在 ASP.NET MVC2 中非常简单的单用户登录?

转载 作者:行者123 更新时间:2023-12-01 09:06:50 25 4
gpt4 key购买 nike

我正在构建我的网站,我想限制我网站的一部分(管理部分)正常公开显示。

  • 我正在使用 LINQ 进行数据库访问。
  • 我有一个服务类来处理通过 LINQ 对数据库的调用
  • 我有整个网站在运行,除了登录部分。

  • 到目前为止我有 只有能够找到使用 MembershipProvider 和/或 RoleProviders 等的示例。老实说,这对于我想要的东西来说似乎太多了。 所有这一切都要做如果您在输入字段中输入正确的密码,则让您进入。

    我真的不能避免提供者吗?

    最佳答案

    由于您只有一个用户,因此您无需创建数据库依赖项。您可以基于硬编码凭据创建一个非常简单的授权服务。例如,

    public class AuthorizationService{
    private AuthorizationService(){}
    public static readonly AuthorizationService Instance = new AuthorizationService();

    private const string HardCodedAdminUsername = "someone";
    private const string HardCodedAdminPassword = "secret";
    private readonly string AuthorizationKey = "ADMIN_AUTHORIZATION";

    public bool Login(string username, string password, HttpSessionStateBase session){
    if(username.ToLowerInvariant().Trim()==HardCodedAdminUsername && password.ToLowerInvariant().Trim()==HardCodedAdminPassword){
    session[AuthorizationKey] = true;
    return true;
    }
    return false;
    }

    public void Logout(HttpSessionStateBase session){
    session[AuthorizationKey] = false;
    }

    public bool IsAdmin(HttpSessionStateBase session){
    return session[AuthorizationKey] == true;
    }
    }

    然后你可以建立一个自定义 IAuthorizationFilter喜欢:
    public class SimpleAuthFilterAttribute: FilterAttribute, IAuthorizationFilter{
    public void OnAuthorization(AuthorizationContext filterContext){
    if(!AuthorizationService.Instance.IsAdmin(filterContext.HttpContext.Session)){
    throw new UnauthorizedAccessException();
    }
    }
    }

    然后你所要做的就是用 SimpleAuthFilter 装饰 protected Controller Action 。并且您的应用程序登录突然起作用了。好极了! (注意,我在 StackOverflow 回答窗口中写了所有这些代码,所以你可能需要在它真正起作用之前清理错字等)

    还有 ,如果您觉得没有必要,您可以重构它以省略用户名。您需要为 Login 创建一个 Controller 操作和 LogoutAuthorizationService 进行相应的调用, 如果您希望 protected Controller 操作可访问。

    关于asp.net - 在 ASP.NET MVC2 中非常简单的单用户登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398207/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com