认证 & 授权 - IAuthenticationService 接口

优质
小牛编辑
132浏览
2023-12-01

[命名空间: Serenity.Abstractions, 程序集: Serenity.Core]

  1. public interface IAuthenticationService
  2. {
  3. bool Validate(ref string username, string password);
  4. }

通常这是由登录页面调用检查输入的凭据是否正确的服务。如果用户名/密码正确,你的实现就应该返回 true。

模拟身份验证服务可以这样写:

  1. public class DummyAuthenticationService : IAuthenticationService
  2. {
  3. public bool Validate(ref string username, string password)
  4. {
  5. return username == password;
  6. }
  7. }

如果用户名等于指定的密码(仅用于演示),该服务则返回 true。

第一个参数是含 ref 的参数,在登录之前,你可以把用户名修改为其在数据库中的实际表示形式。例如,用户可能在登录表单中输入大写的 JOE,但是实际上在数据库中的用户名是 Joe。这不是一项强制要求,但是如果你的数据库是大小写敏感的,可能在登录或登录后的过程中出现问题。

你可以在 global.asax.cs / SiteInitialization.ApplicationStart 注册该服务,如:

  1. protected void Application_Start(object sender, EventArgs e)
  2. {
  3. Dependency.Resolve<IDependencyRegistrar>()
  4. .RegisterInstance(new DummyAuthenticationService());
  5. }

并在你的登录表单中使用它:

  1. void DoLogin(string username, string password)
  2. {
  3. if (Dependency.Resolve<IAuthenticationService>()
  4. .Validate(ref username, password))
  5. {
  6. // FormsAuthentication.SetAuthenticationTicket etc.
  7. }
  8. }