[]
        
(Showing Draft Content)

如何实现安全提供程序

活字格提供ISecurityProvider接口。通过实现该接口,用户可以与其他系统进行集成。

本节介绍如何实现安全提供程序。

实现安全提供程序

操作步骤

1. 在Visual Studio中创建类库项目。设置项目的框架为.NET 6.0。如下图所示。image


image


image





2. 在解决方案资源管理器中的“引用”上右击,选择“添加引用”。



3. 单击右下角的“浏览”,在活字格的安装目录下找到“GrapeCity.Forguncy.SecurityProvider.dll”文件并将其添加为该工程的引用。

  • 如果安装活字格服务端时,安装目录为默认目录,则此文件的路径为“C:\Program Files\ForguncyServer\Website\bin”。

  • 如果安装活字格服务端时,安装目录为自定义路径,则此文件的路径为“自定义路径\ForguncyServer\Website\bin”。



4. 选中“GrapeCity.Forguncy.SecurityProvider.dll”文件,右击选择“属性”,将“复制到本地”改成“False”。



5. 在Class1.cs文件中添加代码,示例代码如下:

using GrapeCity.Forguncy.SecurityProvider;
using System;
using System.Collections.Generic;
using System.Linq;

namespace DemoPasswordSecurityProvider
{
    public class DemoPasswordSecurityProvider : ISecurityProvider
    {
        List<User> testUsers = new List<User>();
        public DemoPasswordSecurityProvider()
        {
            AddUser("User1", "TestUser1", "User1@User1.com", "User1Property");
            AddUser("User2", "TestUser2", "User2@User2.com", "User2Property");
            AddUser("User3", "TestUser3", "User3@User3.com", "User3Property");
        }

        void AddUser(string userId, string userName, string email, string customProperty)
        {
            testUsers.Add(new User()
            {
                UserId = userId,
                Email = email,
                FullName = userName
            });

            testUsers.Last().Properties.Add("customProperty", customProperty);
        }

        public string Name
        {
            get
            {
                return "DemoPasswordSecurityProvider";
            }
        }

        public AuthenticationType AuthenticationType
        {
            get
            {
                return AuthenticationType.UserNameAndPassword;
            }
        }

        public UserInformationStorageMode UserInformationStorageMode
        {
            get
            {
                return UserInformationStorageMode.InForguncyDatabase;
            }
        }

        public UserInformations UserInformations => throw new NotImplementedException();

        public bool AllowLogout
        {
            get
            {
                return true;
            }
        }

        private User GetUserInformation(string userId)
        {
            return testUsers.FirstOrDefault(u => u.UserId == userId);
        }

        public User VerifyUser(Dictionary<string, string> properties)
        {
            var userName = properties["userName"];
            var password = properties["password"];

            var user = GetUserInformation(userName);

            if (user != null && password == "123456")
            {
                return user;
            }

            return null;
        }
    }
}

其中,InForguncyDatabase为活字格存储用户信息的一种方式,另一种方式为InMemoryCache

  • InForguncyDatabase在这种模式下,当用户首次登录活字格网站时,活字格会将用户信息添加到活字格的用户服务数据库中。管理员需要将角色和组织分配给活字格中的用户。如果用户已被添加到活字格,则在原始应用程序中删除用户或用户属性更改,活字格将不会自动同步。

  • InMemoryCache在这种模式下,活字格站点将在启动时获得所有用户信息,用户信息包括用户名、用户属性、角色和组织。然后将用户信息缓存到站点的内存中。活字格将使用这些信息来设置权限和工作流等。

6. 代码添加完成后,在名称上右击,选择“生成”或者“重新生成”,进行编译。

7. 编译完成后,在文件资源管理器中打开该文件夹,在“bin/Debug”或“bin/Release”文件夹下,将生成的所有文件打包为.zip文件。



8. 在用户账户管理界面的“第三方”区域,单击“上传”,选择安全提供程序.zip打包文件即可。



9. 在活字格设计器中,选择认证模式为“第三方用户集成”,发布后即可实现自定义的用户安全程序。