1. Trang chủ
  2. » Công Nghệ Thông Tin

phan quyen dotnetnuke

20 304 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 720 KB

Nội dung

Nếu bạn không muốn sử dụng SQL Express, tạo ra một cơ sở dữ liệu có sản phẩm nào cho trang web DotNetNuke trong tương lai.. Bạn sẽ sử dụng những người sử dụng sau này trong SharePoint nh

Trang 1

Install DotNetNuke

If you have not already installed DotNetNuke, download a copy from here and install

it (you'll have to register) Even though DotNetNuke might not be your expertise, the installation is not harder than SharePoint installation Here are the basic steps:

1 Create a new DNS or hosts file entry for the future DNN site I am calling it:

dnn.zeppelinsoft.com.

2 Download DotNetNuke_x_y_z_Source.zip Unzip it, and set up an IIS site that points to the …/Website folder.

3 Be sure you use ASP.NET version 2.0 and that the Network Services user has permissions to modify that folder.

4 If you don't want to use SQL Express, create an empty database for the future DotNetNuke site.

5 Load your site into a browser, and follow the wizard Use Typical, and

configure it to use your newly created database Setting the database type and connection is the most important step:

1 Tạo một DNS mới hoặc tập tin host mục nhập cho trang web DNN trong tương lai Tôi gọi nó: dnn.zeppelinsoft.com.

2 Tải về DotNetNuke_x_y_z_Source.zip Giải nén nó, và thiết lập một trang web IIS trỏ đến thư mục Website /.

3 Hãy chắc chắn bạn sử dụng phiên bản 2.0 và ASP.NET rằng các dịch vụ mạng, người dùng có quyền để sửa đổi thư mục đó.

4 Nếu bạn không muốn sử dụng SQL Express, tạo ra một cơ sở dữ liệu có sản phẩm nào cho trang web DotNetNuke trong tương lai.

5 Load trang web của bạn vào một trình duyệt, và làm theo hướng dẫn Sử dụng tiêu biểu, và cấu hình nó để sử dụng cơ sở dữ liệu của bạn vừa được tạo

ra Thiết lập các loại hình cơ sở dữ liệu và kết nối là bước quan trọng nhất

Trang 2

6 Next, you will be asked to set the password and emails for two users: host and admin You will use these users later in SharePoint as site collection admins Tiếp theo, bạn sẽ được yêu cầu đặt mật khẩu và email cho hai người sử dụng: máy chủ lưu trữ và quản trị Bạn sẽ sử dụng những người sử dụng sau này trong SharePoint như các quản trị viên tập trang web.

Modify the DotNetNuke database to make

SqlRoleProvider work

There are two providers that we need to set in SharePoint in order to use DotNetNuke

as a user store:

1 Membership Provider: responsible for verifying user credentials, changing

passwords, etc As a Membership Provider, we'll use

SqlMembershipProvider (that ships with ASP.NET 2.0) DotNetNuke

Trang 3

provides native support for it We'll just have to copy some web.config entries,

and we're done I'll show you that later in this article.

Co trách nhiệm xác minh chứng người sử dụng, thay đổi mật khẩu, vv Là một nhà cung cấp thành viên, chúng tôi sẽ sử dụng SqlMembershipProvider (mà tàu với ASP.NET 2,0) DotNetNuke cung cấp hỗ trợ cho nó Chúng tôi chỉ sẽ có sao chép một số mục web.config, và chúng tôi đang thực hiện Tôi sẽ cho bạn thấy rằng sau này trong bài viết này

2 Role Provider: responsible for role management, verifying user roles, etc A

role in Forms based authentication is similar to a user group in Active

Directory DotNetNuke doesn't provide native support for SqlRoleProvider (that ships with ASP.NET 2.0), but it does create all stored procedures used by

it The problem is that it does not populate tables used by SqlRoleProvider with data from its native role management tables There are two solutions to this problem:

Chịu trách nhiệm về vai trò quản lý, xác minh vai trò người sử dụng, vv Các hình thức dựa vào vai trò thẩm định tương tự như một nhóm người dùng trong Active Directory DotNetNuke không cung cấp hỗ trợ cho SqlRoleProvider

1 Use SqlRoleProvider in SharePoint and modify its corresponding SQL stored procedures in DotNetNuke to use its native role

management tables.

2 Create a new role provider that will directly use DotNetNuke native role tables.

I will use the first approach here We only need to modify the following SQL stored procs:

Tôi sẽ sử dụng phương pháp tiếp cận đầu tiên ở đây Chúng tôi chỉ cần phải sửa đổi được lưu trữ procs SQL sau:

• aspnet_Roles_GetAllRoles

• aspnet_Roles_RoleExists

• aspnet_UsersInRoles_FindUsersInRole

• aspnet_UsersInRoles_GetRolesForUser

• aspnet_UsersInRoles_GetUsersInRoles

• aspnet_UsersInRoles_IsUserInRole

I am making two assumptions here:

1 There is no table prefix for DotNetNuke tables You are asked about table prefix during DotNetNuke installation If you chose a prefix, then you will have to modify all the table references in my SQL script to include that prefix.

2 There are no sub-portals in DotNetNuke installation (for simplicity, of course) This means I use only the root portal (PortalID = 0) to get the users and roles definition.

And, here is the SQL sequence to do it (execute it against the DotNetNuke database):

Trang 4

/****** Object: StoredProcedure [dbo].[aspnet_Roles_GetAllRoles]

******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[aspnet_Roles_GetAllRoles] (

@ApplicationName nvarchar(256))

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN

select RoleName from dbo.roles

where

PortalID = 0

END

GO

/****** Object: StoredProcedure [dbo].[aspnet_Roles_RoleExists]

******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[aspnet_Roles_RoleExists]

@ApplicationName nvarchar(256),

@RoleName nvarchar(256)

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN(0)

IF (EXISTS (SELECT RoleName FROM dbo.Roles WHERE LOWER(@RoleName)

= lower(RoleName)

AND Portalid = 0 ))

RETURN(1)

ELSE

RETURN(0)

END

GO

/****** Object: StoredProcedure [dbo]

[aspnet_UsersInRoles_FindUsersInRole] ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

Trang 5

ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_FindUsersInRole]

@ApplicationName nvarchar(256),

@RoleName nvarchar(256),

@UserNameToMatch nvarchar(256)

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN(1)

DECLARE @RoleId int

SELECT @RoleId = NULL

SELECT @RoleId = RoleId

FROM dbo.Roles

WHERE

RoleName = @RoleName

and

PortalID = 0

IF (@RoleId IS NULL)

RETURN(1)

SELECT u.UserName

FROM

dbo.Users u,

dbo.UserRoles ur,

dbo.Roles r

WHERE

u.UserId = ur.UserId AND @RoleId = ur.RoleId

AND

ur.RoleID = r.RoleID

AND

r.PortalID = 0

AND

u.Username LIKE LOWER(@UserNameToMatch)

ORDER BY u.UserName

RETURN(0)

END

GO

/****** Object: StoredProcedure [dbo]

[aspnet_UsersInRoles_GetRolesForUser] ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_GetRolesForUser]

@ApplicationName nvarchar(256),

@UserName nvarchar(256)

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications

Trang 6

WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN(1)

DECLARE @UserId uniqueidentifier

SELECT @UserId = NULL

SELECT @UserId = UserId

FROM dbo.aspnet_Users

WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId =

@ApplicationId

IF (@UserId IS NULL)

RETURN(1)

select

a.RoleName

from

dbo.Roles a

inner join dbo.UserRoles b on a.RoleID = b.RoleID

inner join dbo.Users c on b.UserId = c.UserId

where

a.PortalID = 0

and

c.Username = @UserName

order by a.RoleName

RETURN (0)

END

GO

/****** Object: StoredProcedure [dbo]

[aspnet_UsersInRoles_GetUsersInRoles] ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_GetUsersInRoles]

@ApplicationName nvarchar(256),

@RoleName nvarchar(256)

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN(1)

select a.UserName

from

dbo.Users a

inner join

dbo.UserRoles b on a.UserId = b.UserId

inner join

dbo.Roles c on b.RoleId = c.RoleId

where

c.RoleName = @RoleName

and

c.PortalId = 0

Trang 7

RETURN(0)

END

GO

/****** Object: StoredProcedure [dbo]

[aspnet_UsersInRoles_IsUserInRole] ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_IsUserInRole]

@ApplicationName nvarchar(256),

@UserName nvarchar(256),

@RoleName nvarchar(256)

AS

BEGIN

DECLARE @ApplicationId uniqueidentifier

SELECT @ApplicationId = NULL

SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName

IF (@ApplicationId IS NULL)

RETURN(2)

if (exists(select * from dbo.Users a inner join dbo.UserRoles b

on a.UserId = b.UserId

inner join dbo.Roles c on b.RoleId = c.RoleId

where c.RoleName = @RoleName and a.UserName = @UserName and c.PortalId = 0))

return(1)

else

return(0)

END

Phew, that wasn't too bad DotNetNuke is all set now to be used as a user store from SharePoint.

Create an extended SharePoint web application that uses Forms based authentication

Consider the scenario where you already have a SharePoint web application that uses Active Directory for authentication We'll extend this application to use users from DotNetNuke To do this, follow these steps:

Xem xét các kịch bản mà bạn đã có một ứng dụng web SharePoint rằng sử dụng Active Directory để xác thực Chúng tôi sẽ mở rộng ứng dụng này để sử dụng người dùng từ DotNetNuke Để làm điều này, hãy làm theo các bước sau

1 Create a DNS or hosts file entry for the future SharePoint site I am giving it a

creative name: sharepointdnn.zeppelinsoft.com.

2 Log in to Central Administration and go to the Application Management page Then, click on Create or Extend Web application.

Trang 8

3 Choose Extend an existing Web application In my case, I am extending an existing application called SharePointDNN.

1 Tạo một máy chủ DNS hay tập tin mục nhập cho trang web SharePoint trong tương lai Tôi cho nó một cái tên sáng tạo: sharepointdnn.zeppelinsoft.com.

2 Đăng nhập vào Trung tâm Hành chính và vào trang Quản lý ứng dụng Sau đó, nhấp vào Tạo hoặc Mở rộng ứng dụng web.

3 Kéo dài chọn một ứng dụng web hiện có Trong trường hợp của tôi, tôi đang

mở rộng một ứng dụng hiện có được gọi là SharePointDNN

Be sure that you do the following:

• Choose the right application from the Web Application drop-down.

• Specify port 80, and enter the name you created in the first step in the Host Header entry (you can create a new name if you wish).

• Choose the zone to be Internet.

.Chọn các ứng dụng ngay từ trình đơn thả xuống ứng dụng web.

• Chỉ định cổng 80, và nhập vào tên bạn đã tạo ở bước đầu tiên trong mục Host Header (bạn có thể tạo một tên mới nếu muốn).

• Chọn vùng được Internet.

Trang 9

Modify SharePoint web.config files

Before setting our new extended application to use FBA with DotNetNuke, we need

to make several changes to the web.config file in our SharePoint FBA application as

well as in Central Administration Let's start with the extended application (in my

case, SharePointDNN.zeppelinsoft.com) Before making modifications, I suggest you make a backup There are three entries we need to steal from DotNetNuke web.config and one new entry we need add to, so I would suggest to open both web.config files in

Visual Studio and start doing the following:

Change the web.config for SharePoint FBA application:

Trang 10

1 Copy the connection string entry from DotNetNuke web.config.

Collapse

<connectionStrings>

<add name="SiteSqlServer"

connectionString="Data Source=(local);Initial

Catalog=DotNetNuke;

User ID=xxxxxx;Password=xxxxxx"

providerName="System.Data.SqlClient" />

</connectionStrings>

Paste it to the SharePoint web.config I changed the name of the connection

string to DNNSqlServer to make it more obvious for a web.config reader to

know that it is pointing to a DNN SQL Server Here is what's actually being

pasted into the SharePoint web.config:

Collapse

<! changed for FBA with DotNetNuke >

<connectionStrings>

<add name="DNNSqlServer"

connectionString="Data Source=(local);Initial

Catalog=DotNetNuke;

User ID=xxxxxx;Password=xxxxxx"

providerName="System.Data.SqlClient" />

</connectionStrings>

2 Copy the <membership> section from DotNetNuke, then we'll make a few creative changes such as change the name of the provider to

DNNMembershipProvider and the connection string to DNNSqlServer.

Initial membership entry in DotNetNuke looks like this:

Collapse

<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15">

<providers>

<clear />

<add name="AspNetSqlMembershipProvider"

type="System.Web.Security.SqlMembershipProvider"

connectionStringName="SiteSqlServer"

enablePasswordRetrieval="true"

enablePasswordReset="true"

requiresQuestionAndAnswer="false"

minRequiredPasswordLength="7"

minRequiredNonalphanumericCharacters="0"

requiresUniqueEmail="false"

passwordFormat="Encrypted"

applicationName="DotNetNuke"

description="Stores and retrieves membership data from the local Microsoft SQL Server database" />

</providers>

</membership>

Modified the membership entry in SharePoint:

Collapse

Trang 11

<! changed for FBA with DotNetNuke >

<membership defaultProvider="DNNMembershipProvider"

userIsOnlineTimeWindow="15">

<providers>

<clear />

<add name="DNNMembershipProvider"

type="System.Web.Security.SqlMembershipProvider"

connectionStringName="DNNSqlServer"

enablePasswordRetrieval="true"

enablePasswordReset="true"

requiresQuestionAndAnswer="false"

minRequiredPasswordLength="7"

minRequiredNonalphanumericCharacters="0"

requiresUniqueEmail="false"

passwordFormat="Encrypted"

applicationName="DotNetNuke"

description="Stores and retrieves membership data from the local Microsoft SQL Server database" />

</providers>

</membership>

3 Add the <roleManager> entry This is not found in DotNetNuke, so you have

to manually add it It is important to set the connection string to

DNNSqlServer and the application name to DotNetNuke:

Collapse

<! changed for FBA with DotNetNuke >

<roleManager enabled="true" defaultProvider="DNNRoleProvider"> <providers>

<add name=" DNNRoleProvider "

connectionStringName="DNNSqlServer"

applicationName="DotNetNuke"

type="System.Web.Security.SqlRoleProvider,System.Web,

Version=2.0.0.0,Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

4 This is very important: Copy the <machineKey> as it is from DotNetNuke

web.config into SharePoint web.config Overwrite the existing entry (You

have a backup, right?) <machineKey> is used to hash passwords, and it is specific to each machine and application Unless you set the passwordFormat attribute in DNNMembershipProvider to be Clear, the machineKey has to be identical.

Điều này là rất quan trọng: Sao chép <machineKey> vì nó là từ DotNetNuke web.config vào SharePoint web.config Ghi đè lên mục nhập hiện có (Bạn có một sao lưu, phải không?) <machineKey> được sử dụng để băm mật khẩu, và nó là đặc trưng cho mỗi máy và ứng dụng Trừ khi bạn thiết lập các thuộc tính

passwordFormat trong DNNMembershipProvider được Clear, machineKey phải được giống hệt nhau.

Change the web.config for the Central Administration application

Ngày đăng: 16/03/2014, 22:37

w